HOWTO · Linux
Wie man Strings in Bash verkettet
Wir können zwei oder mehr String-Variablen in der Bash verknüpfen, indem wir sie entweder nacheinander schreiben oder den Operator += verwenden.
Auf dieser Seite
In Bash lassen sich Zeichenketten verketten, indem Sie ihre Variablen in Anführungszeichen direkt nebeneinander schreiben. Mit += hängen Sie Text an den bisherigen Wert einer Variablen an. Ein Leerzeichen gehört nur dann zum Ergebnis, wenn Sie es ausdrücklich in den zugewiesenen Text aufnehmen.
Methode 1: Einfache Verkettung
Für zwei Werte schreiben Sie ihre Variablenerweiterungen in Anführungszeichen direkt hintereinander. Einen gewünschten Trenner setzen Sie wörtlich in die Anführungszeichen:
string1="Hello"
string2="World"
result="$string1 $string2"
printf '%s\n' "$result"
Die Variable result enthält Hello World, weil in der Zuweisung zwischen $string1 und $string2 ein Leerzeichen steht. Setzen Sie Erweiterungen in Anführungszeichen, wenn Sie einen Wert an einen Befehl übergeben, wie bei printf '%s\n' "$result". So bleiben Leerzeichen und Platzhalterzeichen Teil des Werts, statt eine Wortaufteilung oder Dateinamenerweiterung auszulösen. Geschweifte Klammern grenzen einen Variablennamen ab, wenn angrenzender Text sonst als Teil des Namens gelesen werden könnte, etwa in "${string1}_suffix". Bash-Variablen haben keinen festgelegten Zeichenketten- oder Ganzzahltyp. Daher kann auch ein wie eine Zahl aussehender Wert als Text verwendet werden, zum Beispiel mit number=42 und anschließend label="ID: $number".
Methode 2: Den Operator += verwenden
Mit += hängen Sie den Text auf der rechten Seite an den aktuellen Wert einer Variablen an:
greeting="Hello"
greeting+=" World"
printf '%s\n' "$greeting"
Das vorangestellte Leerzeichen in " World" gehört zum angehängten Text; deshalb enthält greeting anschließend Hello World. Der Operator += aktualisiert dieselbe Variable. Hier hängt er Zeichenkettentext an und führt keine arithmetische Addition aus.
Methode 3: Mehrere Zeichenketten verketten
Mehrere Variablenerweiterungen und Textliterale in Anführungszeichen können zusammen einen Wert bilden. Setzen Sie gewünschte Trenner an die passende Stelle:
first="Bash"
second="is"
third="great!"
combined="$first $second $third"
printf '%s\n' "$combined"
Die drei Erweiterungen werden der Reihe nach verbunden. Die beiden Leerzeichen im Zuweisungstext dienen als Trenner. Wenn das gewünschte Format keine Leerzeichen enthält, lassen Sie sie weg; Bash fügt nicht automatisch Trenner ein.
Methode 4: Zeichenketten in Schleifen verketten
Hängen Sie die einzelnen Elemente nacheinander an. Dieses Beispiel setzt zwischen die Elemente jeweils ein Leerzeichen und vermeidet dadurch ein abschließendes Leerzeichen:
result=""
separator=""
for word in "Learning" "Bash" "is" "fun"
do
result+="${separator}${word}"
separator=" "
done
printf '%s\n' "$result"
Das erste Element wird ohne Trenner angehängt. Nach jedem Element wird separator auf ein Leerzeichen gesetzt. Dadurch sind die folgenden Elemente getrennt, und der fertige Wert endet mit fun. Ersetzen Sie die Wörter in Anführungszeichen durch die Werte Ihrer Schleife. Wenn eingefügte Werte Leerzeichen oder Platzhalterzeichen enthalten können, setzen Sie ihre Erweiterungen ebenfalls in Anführungszeichen.
Methode 5: Befehlssubstitution verwenden
Bei der Befehlssubstitution mit $(...) wird ein Befehl ausgeführt und seine Standardausgabe in die umgebende Zuweisung eingesetzt:
name="John"
greeting="Hello, $(printf '%s' "$name")!"
printf '%s\n' "$greeting"
Die Ausgabe des Befehls wird zwischen Hello, und ! eingesetzt. Bei der Befehlssubstitution werden abschließende Zeilenumbruchzeichen aus der Ausgabe entfernt. Setzen Sie Werte innerhalb des Befehls und die resultierende Variable bei der Verwendung als Argument in Anführungszeichen.
Fazit
Um Zeichenketten in Bash zu verketten, schreiben Sie Werte in Anführungszeichen nebeneinander, fügen gewünschte Trenner ausdrücklich ein oder hängen mit += Text an einen vorhandenen Wert an. Eine Schleife kann das Anhängen wiederholen; mit $(...) lässt sich Befehlsausgabe einsetzen. Setzen Sie Erweiterungen bei der Übergabe an Befehle in Anführungszeichen, damit Leerzeichen und Platzhalterzeichen Teil des Werts bleiben.
Häufig gestellte Fragen
-
Wie verkette ich zwei Zeichenketten in Bash?
Weisen Sie direkt aufeinanderfolgende, in Anführungszeichen gesetzte Erweiterungen zu, zum Beispielcombined="${first}${second}", oder hängen Sie eine mitcombined+="$second"an. Soll das Ergebnis ein Leerzeichen enthalten, nehmen Sie es in den Text in Anführungszeichen auf. -
Kann ich Zeichenketten in einer Schleife verketten?
Ja. Hängen Sie jedes Element mit+=an eine Ergebnisvariable an. Wenn der zusammengesetzte Wert Trenner benötigt, fügen Sie diese bewusst zwischen den Elementen ein. -
Was ist Befehlssubstitution in Bash?
$(...)führt einen Befehl aus und setzt dessen Standardausgabe in den umgebenden Text ein. Abschließende Zeilenumbruchzeichen dieser Ausgabe werden entfernt. -
Wie ermittle ich die Länge einer Zeichenkette?
Mit${#value}erhalten Sie die Länge des Werts einer Bash-Variablen. Wie Zeichen gezählt werden, kann vom aktiven Gebietsschema abhängen; im GebietsschemaCwerden Bytes gezählt. -
Kann ich Zeichenketten mit Sonderzeichen verketten?
Ja. Doppelte Anführungszeichen erhalten Leerzeichen und verhindern bei Variablenwerten eine Platzhaltererweiterung. Shell-Syntax wie$, Backticks und Anführungszeichen muss beim wörtlichen Eingeben dennoch gegebenenfalls in Anführungszeichen gesetzt oder maskiert werden. Wählen Sie für beliebigen Text eine Zitierung, die verhindert, dass die Shell dessen Zeichen vor der Zuweisung interpretiert.