Bash-Variablensubstitution von Variablen gefolgt von einem Unterstrich

Bash-Variablensubstitution von Variablen gefolgt von einem Unterstrich

Die Variable BUILDNUMBERist auf den Wert 230 eingestellt. Ich erwarte, 230_dass der Befehl ausgedruckt wird echo $BUILDNUMBER_, aber die Ausgabe ist leer, wie unten gezeigt.

# echo $BUILDNUMBER_

# echo $BUILDNUMBER
230

Antwort1

Der Befehl echo $BUILDNUMBER_druckt den Wert einer Variablen $BUILDNUMBER_, die nicht festgelegt ist (der Unterstrich ist ein gültiges Zeichen für einen Variablennamen, wie Jeff Schaller ausdrücklich anmerkt).

Sie müssen lediglich Klammern (geschwungene Klammern) um den Variablennamen setzen oder das starrste printfTool verwenden:

echo "${BUILDNUMBER}_"
printf '%s_\n' "$BUILDNUMBER"

PS: Setzen Sie Ihre Variablen immer in Anführungszeichen.

Antwort2

Wie George Vassiliou bereitserklärt$BUILDNUMBER_, das liegt daran, dass Sie die Variable statt drucken $BUILDNUMBER. Der beste Weg, um das gewünschte Ergebnis zu erzielen, ist die Verwendung von , ${BUILDNUMBER}_wie George es erklärt hat. Hier sind einige weitere Optionen:

$ echo "$BUILDNUMBER"_
230_
$ echo $BUILDNUMBER"_"
230_
$ printf '%s_\n' "$BUILDNUMBER"
230_

verwandte Informationen