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 $var
unmittelbar darauf ein anderes gültiges Variablennamenzeichen folgen soll ... Beispiel: $vararbitary
Interpretiert 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)
.
join
könnte auch die Sache für Sie erledigen.