Je dois concaténer deux chaînes dans bash, de sorte que:
string1=hello
string2=world
mystring=string1+string2
echo mystring devrait produire
Bonjour le monde
Je dois concaténer deux chaînes dans bash, de sorte que:
string1=hello
string2=world
mystring=string1+string2
echo mystring devrait produire
Bonjour le monde
Réponses:
Vous n'avez pas besoin d'utiliser {} sauf si vous allez utiliser les paramètres de variable bash ou ajouter immédiatement un caractère qui ferait partie de l'identifiant. De plus, vous n'avez pas besoin d'utiliser les guillemets, à 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"
Au cas où vous auriez besoin de concaténer des variables avec des chaînes littérales:
string1=hello
string2=world
mystring="some ${string1} arbitrary ${string2} text"
echo $mystring produira:
un peu de bonjour texte arbitraire du monde
${var}format à tout moment, mais vous en avez besoin uniquement quand il $vardoit être immédiatement suivi d'un autre caractère de nom de variable valide ... par exemple: $vararbitaryinterprétera une variable nommée "vararbitary" ${var}arbitary... oups, je viens de voir l'abswer de khamer ... mais je peux tout aussi bien laisser le commentaire ici.
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).
joinpourrait également faire la chose pour vous.