Zmienna BUILDNUMBERjest 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 BUILDNUMBERjest 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 printfnarzę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_
$IFSzawiera, więc echo $BUILDNUMBER"_"nadal jest źle. Z tych trzech printf '%s_\n' "$BUILDNUMBER"jest poprawne tylko wtedy, gdy nie wiemy co $BUILDNUMBERlub co $IFSutrzymujemy.