Ich muss zwei Zeichenfolgen in Bash verketten, damit:
string1=hello
string2=world
mystring=string1+string2
echo mystring sollte produzieren
Hallo Welt
Ich muss zwei Zeichenfolgen in Bash verketten, damit:
string1=hello
string2=world
mystring=string1+string2
echo mystring sollte produzieren
Hallo Welt
Antworten:
Sie müssen nicht {} verwenden, es sei denn, Sie verwenden Bash-Variablenparameter oder hängen sofort ein Zeichen an, das als Teil des Bezeichners gültig wäre. Sie müssen auch keine doppelten Anführungszeichen verwenden, es sei denn, Ihre Parameter enthalten Sonderzeichen.
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"
Wenn Sie Variablen mit Literalzeichenfolgen verketten müssen:
string1=hello
string2=world
mystring="some ${string1} arbitrary ${string2} text"
echo $mystring wird herstellen:
einige hallo beliebiger welttext
${var}Format jederzeit verwenden, aber Sie benötigen es nur , wenn $varunmittelbar darauf ein anderes gültiges Variablennamenzeichen folgen soll ... Beispiel: $vararbitaryInterpretiert eine Variable mit dem Namen "vararbitary", aber Sie können es umgehen, indem Sie verwenden ${var}arbitary.... hoppla, ich habe gerade khamer's abswer gesehen .. aber ich kann den Kommentar auch hier hinterlassen.
Wenn Sie viele Variablen verketten möchten, können Sie auch +=Zeichenfolgen anhängen. Dies kann die Lesbarkeit verbessern.
mystring=${string1}
mystring+=${string2}
mystring+=${string3}
mystring+=${string4}
echo ${mystring}
Wie in anderen Antworten erwähnt, werden die {} hier nicht benötigt, aber ich persönlich benutze sie immer, um einige Syntaxfehler zu vermeiden.
+=können auch anhängen Werte Arrays verwendet werden: array+=($b).
joinkönnte auch die Sache für Sie erledigen.