Zmienna BUILDNUMBER
jest ustawiona na wartość 230. Spodziewam 230_
się, że zostanie wydrukowana dla polecenia, echo $BUILDNUMBER_
ale wynik jest pusty, jak pokazano poniżej.
# echo $BUILDNUMBER_
# echo $BUILDNUMBER
230
Zmienna BUILDNUMBER
jest ustawiona na wartość 230. Spodziewam 230_
się, że zostanie wydrukowana dla polecenia, echo $BUILDNUMBER_
ale wynik jest pusty, jak pokazano poniżej.
# echo $BUILDNUMBER_
# echo $BUILDNUMBER
230
Odpowiedzi:
Polecenie echo $BUILDNUMBER_
wypisze wartość zmiennej, $BUILDNUMBER_
która nie jest ustawiona (podkreślenie jest poprawnym znakiem dla nazwy zmiennej, jak wyraźnie zauważył Jeff Schaller)
Wystarczy zastosować nawiasy klamrowe (nawiasy klamrowe) wokół nazwy zmiennej lub użyć najbardziej sztywnego printf
narzędzia:
echo "${BUILDNUMBER}_"
printf '%s_\n' "$BUILDNUMBER"
PS: Zawsze podawaj swoje zmienne.
Jak już wyjaśnił George Vassiliou , to dlatego, że wypisujesz zmienną $BUILDNUMBER_
zamiast $BUILDNUMBER
. Najlepszym sposobem na zdobycie tego, czego chcesz, jest skorzystanie z ${BUILDNUMBER}_
wyjaśnień George'a. Oto kilka innych opcji:
$ echo "$BUILDNUMBER"_
230_
$ echo $BUILDNUMBER"_"
230_
$ printf '%s_\n' "$BUILDNUMBER"
230_
$IFS
zawiera, więc echo $BUILDNUMBER"_"
nadal jest źle. Z tych trzech printf '%s_\n' "$BUILDNUMBER"
jest poprawne tylko wtedy, gdy nie wiemy co $BUILDNUMBER
lub co $IFS
utrzymujemy.