У мене є bash-скрипт, який встановлює -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 ))
?