web-dev-qa-db-fra.com

comment concaténer des variables de chaîne dans un troisième?

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

39
michelemarcon

simplement concaténer les variables:

mystring="$string1$string2"
40
SiegeX

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"
53
khamer

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

19
phunehehe

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).

12
mariux