मेरे पास एक बैश स्क्रिप्ट है, जो सेट करती है-इसलिए स्क्रिप्ट किसी भी निकास स्थिति पर बाहर निकल जाएगी! = 0।
मैं कुछ बुनियादी शेल अंकगणित करने की कोशिश कर रहा हूं जो चर को सौंपा गया है और कभी-कभी अभिव्यक्ति 0 के बराबर होती है जो लेट या एक्सआर कमांड के बाहर निकलने की स्थिति का कारण "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 ))
?