Wie verkettet man Stringvariablen in ein Drittel?

36

Ich muss zwei Zeichenfolgen in Bash verketten, damit:

string1=hello
string2=world

mystring=string1+string2

echo mystring sollte produzieren

Hallo Welt

Michelemarcon
quelle
Terminal-Befehl joinkönnte auch die Sache für Sie erledigen.
Léo Léopold Hertz 준영

Antworten:

38

verketten Sie einfach die Variablen:

mystring="$string1$string2"
SiegeX
quelle
51

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"
khamer
quelle
2
Dies ist, wonach ich gesucht habe [z = "$ x und $ y" # funktioniert nicht ..... z = "$ {x} und $ y" # funktioniert, "fooandbar"]. Vielen Dank.
blokeish
18

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

phunehehe
quelle
6
Sie können das ${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.
Peter.O
11

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

Mariux
quelle