Tôi có một tập lệnh bash đặt -e để tập lệnh sẽ thoát trên bất kỳ trạng thái thoát nào! = 0.
Tôi đang cố gắng thực hiện một số số học cơ bản được gán cho các biến và đôi khi biểu thức bằng 0, khiến trạng thái thoát của lệnh let hoặc expr là "1".
Đây là một ví dụ:
#!/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"
Đầu ra là:
$ ./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'
Câu hỏi của tôi là cách viết kịch bản bash thành ngữ để cho phép tập lệnh thất bại với các lỗi thoát thực và không phải là số học cơ bản bằng 0. Tôi có thể kết hợp tất cả các biểu thức đó với:
A=`expr $C - $D` || true
Nhưng điều đó có vẻ hacky.
(( A = $C - $D ))
?