ตัวแปรBUILDNUMBERถูกตั้งค่าเป็น 230 ฉันคาดว่า230_จะพิมพ์สำหรับคำสั่งecho $BUILDNUMBER_แต่เอาต์พุตว่างเปล่าดังแสดงด้านล่าง
# echo $BUILDNUMBER_
# echo $BUILDNUMBER
230
ตัวแปรBUILDNUMBERถูกตั้งค่าเป็น 230 ฉันคาดว่า230_จะพิมพ์สำหรับคำสั่งecho $BUILDNUMBER_แต่เอาต์พุตว่างเปล่าดังแสดงด้านล่าง
# echo $BUILDNUMBER_
# echo $BUILDNUMBER
230
คำตอบ:
คำสั่งecho $BUILDNUMBER_จะพิมพ์ค่าของตัวแปร$BUILDNUMBER_ที่ไม่ได้ตั้งค่า (ขีดล่างเป็นอักขระที่ถูกต้องสำหรับชื่อตัวแปรตามที่ระบุไว้อย่างชัดเจนโดย Jeff Schaller)
คุณเพียงแค่ต้องใช้วงเล็บปีกกา (วงเล็บปีกกา) รอบชื่อตัวแปรหรือใช้printfเครื่องมือที่เข้มงวดที่สุด:
echo "${BUILDNUMBER}_"
printf '%s_\n' "$BUILDNUMBER"
PS: พูดตัวแปรของคุณเสมอ
ขณะที่จอร์จ Vassiliou แล้วอธิบายว่าเป็นเพราะคุณพิมพ์ตัวแปรแทน$BUILDNUMBER_ $BUILDNUMBERวิธีที่ดีที่สุดในการได้รับสิ่งที่คุณต้องการคือการใช้${BUILDNUMBER}_ตามที่จอร์จอธิบาย นี่คือตัวเลือกเพิ่มเติม:
$ echo "$BUILDNUMBER"_
230_
$ echo $BUILDNUMBER"_"
230_
$ printf '%s_\n' "$BUILDNUMBER"
230_
$IFSเก็บอะไรดังนั้นecho $BUILDNUMBER"_"ก็ยังผิด จากสามข้อprintf '%s_\n' "$BUILDNUMBER"นั้นถูกต้องก็ต่อเมื่อเราไม่รู้ว่ามีอะไร$BUILDNUMBERหรือ$IFSถืออยู่