ฉันเรียนรู้วิธีใช้set
ตัวเลือกต่างๆ ในสคริปต์อย่างมีประสิทธิภาพและพบset -u
ว่าเหมาะสำหรับการออกจากสคริปต์หากตัวแปรไม่ได้รับการตั้งค่าอย่างเหมาะสม (เช่นการลบผู้ใช้) ตามหน้าmanset -u
และset -e
ทำสิ่งต่อไปนี้ ...
-e Exit immediately if a command exits with a non-zero status.
-u Treat unset variables as an error when substituting.
ฉันสร้างสคริปต์ทดสอบเพื่อทดสอบฟังก์ชันนี้ แต่ดูเหมือนว่าจะไม่ทำงานตามที่คาดไว้ บางทีใครบางคนสามารถอธิบายปัญหาของฉันกับฉันได้ดีกว่าและฉันกำลังตีความผิด ๆ อยู่ที่ไหน? สคริปต์ทดสอบอยู่ด้านล่าง ขอขอบคุณ.
set -e
set -u
testing="This works"
echo $?
echo ${testing}
testing2=
echo $?
echo ${testing2}
testing3="This should not appear"
echo $?
echo ${testing3}
ฉันคาดหวังให้สคริปต์แสดง0และ"ใช้งานได้"แล้วล้มเหลวเนื่องจาก${testing2}
ไม่ได้ตั้งค่า
ฉันแสดงเป็น0และ"ใช้งานได้"แทนตามด้วย0จากนั้น0 แสดงว่าไม่ควรปรากฏ
มีใครให้ความรู้บ้างไหม? ขอขอบคุณ.