Variabel BUILDNUMBER
diatur ke nilai 230. Saya berharap 230_
akan dicetak untuk perintah echo $BUILDNUMBER_
tetapi output kosong seperti yang ditunjukkan di bawah ini.
# echo $BUILDNUMBER_
# echo $BUILDNUMBER
230
Variabel BUILDNUMBER
diatur ke nilai 230. Saya berharap 230_
akan dicetak untuk perintah echo $BUILDNUMBER_
tetapi output kosong seperti yang ditunjukkan di bawah ini.
# echo $BUILDNUMBER_
# echo $BUILDNUMBER
230
Jawaban:
Perintah echo $BUILDNUMBER_
akan mencetak nilai variabel $BUILDNUMBER_
yang tidak disetel (garis bawah adalah karakter yang valid untuk nama variabel seperti yang secara eksplisit dicatat oleh Jeff Schaller)
Anda hanya perlu menerapkan kawat gigi (kurung keriting) di sekitar nama variabel atau menggunakan alat yang paling kaku printf
:
echo "${BUILDNUMBER}_"
printf '%s_\n' "$BUILDNUMBER"
PS: Selalu kutip variabel Anda.
Seperti yang sudah dijelaskan George Vassiliou , itu karena Anda yang mencetak variabel, $BUILDNUMBER_
bukan $BUILDNUMBER
. Cara terbaik untuk mendapatkan apa yang Anda inginkan adalah menggunakan ${BUILDNUMBER}_
seperti yang dijelaskan George. Berikut ini beberapa opsi:
$ echo "$BUILDNUMBER"_
230_
$ echo $BUILDNUMBER"_"
230_
$ printf '%s_\n' "$BUILDNUMBER"
230_
$IFS
berlaku, jadi echo $BUILDNUMBER"_"
masih salah. Dari ketiganya, hanya printf '%s_\n' "$BUILDNUMBER"
benar jika kita tidak tahu apa $BUILDNUMBER
atau $IFS
pegang.