चूंकि आप संख्याओं की तुलना कर रहे हैं, आप एक अंकगणितीय अभिव्यक्ति का उपयोग कर सकते हैं , जो मापदंडों और तुलना की सरल हैंडलिंग के लिए अनुमति देता है:
wget -q --tries=10 --timeout=20 --spider http://google.com
if (( $? != 0 )); then
echo "Sorry you are Offline"
exit 1
fi
ध्यान दें कि इसके बजाय -ne
आप कैसे उपयोग कर सकते हैं !=
। एक अंकगणितीय संदर्भ में, हमें $
मापदंडों के लिए भी प्राथमिकता नहीं देनी चाहिए,
var_a=1
var_b=2
(( var_a < var_b )) && echo "a is smaller"
पूरी तरह से ठीक काम करता है। यह $?
विशेष पैरामीटर के लिए उपयुक्त नहीं है, हालांकि।
आगे, चूंकि (( ... ))
गैर-शून्य मानों का सही मूल्यांकन करता है, अर्थात, शून्य-शून्य मानों के लिए 0 की वापसी स्थिति और 1 की वापसी स्थिति है, अन्यथा हम छोटा कर सकते हैं
if (( $? )); then
लेकिन इससे अधिक लोगों को भ्रमित किया जा सकता है कि बचाए गए कीस्ट्रोक्स की तुलना में अधिक लोग लायक हैं।
(( ... ))
निर्माण बैश में उपलब्ध है, लेकिन वजह से नहीं POSIX खोल विनिर्देश (हालांकि, संभव विस्तार के रूप में उल्लेख किया है)।
यह सब कहा जा रहा है, यह $?
मेरी राय में पूरी तरह से बचने के लिए बेहतर है , जैसा कि कोल के जवाब और स्टीवन के जवाब में है ।
if ! [[ ...
काम करता है