Saya memiliki skrip bash yang menetapkan -e sehingga skrip akan keluar pada status keluar apa pun! = 0.
Saya mencoba untuk melakukan beberapa aritmatika shell dasar yang ditugaskan untuk variabel dan kadang-kadang ekspresi sama dengan 0 yang menyebabkan status keluar dari perintah let atau expr menjadi "1".
Ini sebuah contoh:
#!/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"
Outputnya adalah:
$ ./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'
Pertanyaan saya adalah apa cara scripting bash idiomatik untuk memungkinkan skrip gagal pada kesalahan keluar nyata dan bukan pada aritmatika dasar sama dengan 0. Saya bisa mengakhiri semua ekspresi dengan:
A=`expr $C - $D` || true
Tapi itu sepertinya berantakan.
sumber
(( A = $C - $D ))
?Saya memiliki masalah yang sama . tl; dr:
sumber
Sintaks ini berfungsi untuk saya:
sumber