J'ai besoin de concaténer deux chaînes dans bash, afin que:
string1=hello
string2=world
mystring=string1+string2
echo mystring
devrait produire
bonjour le monde
simplement concaténer les variables:
mystring="$string1$string2"
Vous n'avez pas besoin d'utiliser {} sauf si vous allez utiliser des paramètres de variable bash ou ajouter immédiatement un caractère qui serait valide dans le cadre de l'identifiant. Vous n'avez pas non plus besoin d'utiliser de guillemets doubles à moins que vos paramètres incluent des caractères spéciaux.
x=foo
y=bar
z=$x$y # $z is now "foobar"
z="$x$y" # $z is still "foobar"
z="$xand$y" # does not work
z="${x}and$y" # does work, "fooandbar"
z="$x and $y" # does work, "foo and bar"
Dans le cas où vous devez concaténer des variables avec des chaînes littérales:
string1=hello
string2=world
mystring="some ${string1} arbitrary ${string2} text"
echo $mystring
produira:
un bonjour du texte arbitraire du monde
Si vous souhaitez concaténer un grand nombre de variables, vous pouvez également utiliser +=
Pour ajouter des chaînes .. Cela peut augmenter la lisibilité ..
mystring=${string1}
mystring+=${string2}
mystring+=${string3}
mystring+=${string4}
echo ${mystring}
Comme mentionné dans d'autres réponses, les {} ne sont pas nécessaires ici, mais personnellement, je les utilise toujours pour éviter certaines erreurs de syntaxe.
+=
Peut également être utilisé pour ajouter des valeurs aux tableaux: array+=($b)
.