Ho uno script bash che imposta -e quindi lo script uscirà con qualsiasi stato di uscita! = 0.
Sto provando a fare un po 'di aritmetica della shell di base assegnata alle variabili e talvolta l'espressione è uguale a 0, il che fa sì che lo stato di uscita del comando let o expr sia "1".
Ecco un esempio:
#!/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"
L'output è:
$ ./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'
La mia domanda è qual è il modo di scripting bash idiomatico per consentire allo script di fallire su errori di uscita reali e non su un'aritmetica di base uguale a 0. Potrei aggiungere a tutte quelle espressioni il suffisso:
A=`expr $C - $D` || true
Ma sembra disordinato.
(( A = $C - $D ))
?