我有一个设置-e的bash脚本,因此该脚本将在任何退出状态!= 0时退出。
我试图做一些分配给变量的基本Shell算术运算,有时表达式等于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'
我的问题是什么是惯用的bash脚本编写方式,允许该脚本在实际退出错误而不是在等于0的基本算术上失败。我可以在所有这些表达式后缀:
A=`expr $C - $D` || true
但这似乎很hack。
(( A = $C - $D ))
?