Ersetzen der Variablen durch Bash-Variablen, gefolgt von einem Unterstrich


11

Die Variable BUILDNUMBERwird auf den Wert 230 gesetzt. Ich erwarte 230_, dass sie für den Befehl gedruckt wird, echo $BUILDNUMBER_aber die Ausgabe ist leer, wie unten gezeigt.

# echo $BUILDNUMBER_

# echo $BUILDNUMBER
230

Antworten:


25

Der Befehl echo $BUILDNUMBER_gibt den Wert der $BUILDNUMBER_nicht festgelegten Variablen aus (der Unterstrich ist ein gültiges Zeichen für einen Variablennamen, wie von Jeff Schaller explizit angegeben).

Sie müssen nur geschweifte Klammern (geschweifte Klammern) um den Variablennamen setzen oder das starrste printfWerkzeug verwenden:

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

PS: Zitieren Sie immer Ihre Variablen.


In der Dokumentation und im Standard wird der Begriff "null" für eine Variable verwendet, die auf eine leere Zeichenfolge festgelegt ist (im Gegensatz zu einer nicht festgelegten Variablen). Ich habe mir die Freiheit genommen, zu bearbeiten.
Ilkkachu

7

Wie George Vassiliou bereits erklärt hat, liegt dies daran, dass Sie $BUILDNUMBER_stattdessen die Variable drucken $BUILDNUMBER. Der beste Weg, um das zu bekommen, was Sie wollen, ist, ${BUILDNUMBER}_wie George erklärte. Hier sind einige weitere Optionen:

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

Wir wissen, was die Variable enthält, aber wir wissen nicht, was $IFSgilt, also echo $BUILDNUMBER"_"ist es immer noch falsch. Von den dreien ist nur printf '%s_\n' "$BUILDNUMBER"dann richtig, wenn wir nicht wissen, was $BUILDNUMBERoder $IFShalten.
Stéphane Chazelas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.