-eを設定するbashスクリプトがあるので、スクリプトは終了ステータス!= 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に等しい基本的な算術ではなく、実際の終了エラーでスクリプトを失敗させる慣用的なbashスクリプトの方法は何ですか。
A=`expr $C - $D` || true
しかし、それはハッキーなようです。
(( A = $C - $D ))
ですか?