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


36

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


La commande de terminal joinpourrait également faire la chose pour vous.
Léo Léopold Hertz 준영

Réponses:


38

simplement concaténer les variables:

mystring="$string1$string2"

51

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"

2
C'est ce que je cherchais [z = "$ xand $ y" # ne fonctionne pas ..... z = "$ {x} et $ y" # fonctionne, "fooandbar"]. Merci.
Blairish

18

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


6
Vous pouvez utiliser le ${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.
Peter.O

11

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.