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 $var
doit être immédiatement suivi d'un autre caractère de nom de variable valide ... par exemple: $vararbitary
interpré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)
.
join
pourrait également faire la chose pour vous.