ตัวแปร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
ถืออยู่