ฉันใช้set -e
เพื่อหยุดทุบตีสคริปต์ในข้อผิดพลาดครั้งแรก
ทำงานได้ดีทั้งหมดเว้นแต่ฉันจะใช้คำสั่งด้วย&&
:
$ cat script
set -e
cd not_existing_dir && echo 123
echo "I'm running! =P"
$
$ ./script
./script: line 2: cd: not_existing_dir: No such file or directory
I'm running! =P
$
เมื่อเทียบกับ:
$ cat script
set -e
cd not_existing_dir
echo "I'm running! =P"
$
$ ./script
./script: line 2: cd: not_existing_dir: No such file or directory
$
ตัวอย่างแรกยังคงเสียงก้องI'm running!
แต่ตัวอย่างที่สองไม่ได้ ทำไมพวกเขาถึงประพฤติแตกต่างกัน
UPD คำถามที่คล้ายกัน: /programming/6930295/set-e-and-short-tests
cd
คำสั่งไม่สำเร็จ
set -e
พฤติกรรมเป็นที่น่าแปลกใจ