ฉันมี bash script ที่ตั้งค่า -e ดังนั้นสคริปต์จะออกจากสถานะการออกใด ๆ ! = 0
ฉันพยายามทำเลขคณิตพื้นฐานของเชลล์ที่กำหนดให้กับตัวแปรและบางครั้งนิพจน์มีค่าเท่ากับ 0 ซึ่งทำให้สถานะการออกของคำสั่ง let หรือ expr เป็น "1"
นี่คือตัวอย่าง:
#!/bin/bash -ex
echo "Test 1"
Z=`expr 1 - 1` || true
echo "Z will print"
let "A=4 - 4"
echo "A WILL NEVER PRINT $A"
Y=`expr 1 - 1`
echo "Y WILL NEVER PRINT $Y"
X=$(expr 2 - 2)
echo "X WILL NEVER PRINT $X"
ผลลัพธ์คือ:
$ ./test_error.sh
+ echo 'Test 1'
Test 1
++ expr 1 - 1
+ Z=0
+ true
+ echo 'Z will print'
Z will print
+ let 'A=4 - 4'
คำถามของฉันคือสิ่งที่เป็นวิธีการเขียนสคริปต์ทุบตีสำนวนเพื่อให้สคริปต์ล้มเหลวในข้อผิดพลาดทางออกจริงและไม่ได้อยู่ในเลขคณิตพื้นฐานเท่ากับ 0 ฉันสามารถต่อท้ายการแสดงออกทั้งหมดที่มี:
A=`expr $C - $D` || true
แต่ดูเหมือนว่าแฮ็ค
(( A = $C - $D ))
?