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 printfcô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_
$IFSgiữ, 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ì $BUILDNUMBERhoặc $IFSgiữ.