Biến BUILDNUMBER
được đặt thành giá trị 230. Tôi dự kiến 230_
sẽ được in cho lệnh echo $BUILDNUMBER_
nhưng đầu ra trống như dưới đây.
# echo $BUILDNUMBER_
# echo $BUILDNUMBER
230
Biến BUILDNUMBER
được đặt thành giá trị 230. Tôi dự kiến 230_
sẽ được in cho lệnh echo $BUILDNUMBER_
nhưng đầu ra trống như dưới đây.
# echo $BUILDNUMBER_
# echo $BUILDNUMBER
230
Câu trả lời:
Lệnh echo $BUILDNUMBER_
sẽ in giá trị của biến $BUILDNUMBER_
không được đặt (gạch dưới là ký tự hợp lệ cho tên biến như được lưu ý rõ ràng bởi Jeff Schaller)
Bạn chỉ cần áp dụng dấu ngoặc nhọn (dấu ngoặc nhọn) xung quanh tên biến hoặc sử dụng printf
công cụ cứng nhất :
echo "${BUILDNUMBER}_"
printf '%s_\n' "$BUILDNUMBER"
PS: Luôn trích dẫn các biến của bạn.
Như George Vassiliou đã giải thích , đó là vì bạn đang in biến $BUILDNUMBER_
thay vì $BUILDNUMBER
. Cách tốt nhất để có được những gì bạn muốn là sử dụng ${BUILDNUMBER}_
như George giải thích. Dưới đây là một số tùy chọn khác:
$ echo "$BUILDNUMBER"_
230_
$ echo $BUILDNUMBER"_"
230_
$ printf '%s_\n' "$BUILDNUMBER"
230_
$IFS
giữ, vì vậy echo $BUILDNUMBER"_"
vẫn còn sai. Trong ba, chỉ printf '%s_\n' "$BUILDNUMBER"
đúng nếu chúng ta không biết cái gì $BUILDNUMBER
hoặc $IFS
giữ.