क्यों " -a
या -o
ऑपरेटर का उपयोग कभी नहीं "?
क्योंकि वे अमीर हो सकते हैं और इसलिए वे POSIX- अनुरूप नहीं हैं :
XSI एक्सटेंशन -a और -o बाइनरी प्राइमरी को निर्दिष्ट करता है और '(' और ')' ऑपरेटर्स को अप्रचलित चिह्नित किया गया है। (उनका उपयोग करने वाले कई अभिव्यक्ति अस्पष्ट रूप से व्याकरण द्वारा परिभाषित किए गए विशिष्ट अभिव्यक्तियों के आधार पर परिभाषित किए जाते हैं।) इन अभिव्यक्तियों का उपयोग करने वाले लिपियों को नीचे दिए गए रूपों में परिवर्तित किया जाना चाहिए। भले ही कई कार्यान्वयन इन अश्लील रूपों का समर्थन करना जारी रखेंगे, लेकिन स्क्रिप्ट को उपयोगकर्ता-प्रदत्त इनपुट से निपटने में बेहद सावधानी बरतनी चाहिए जो इन और अन्य प्राइमरी और ऑपरेटरों के साथ भ्रमित हो सकती है। जब तक एप्लिकेशन डेवलपर स्क्रिप्ट के लिए इनपुट उत्पन्न करने वाले सभी मामलों को नहीं जानता, जैसे कि चालान:
test "$1" -a "$2"
के रूप में लिखा जाना चाहिए:
test "$1" && test "$2"
मैं "कई [
कमांड &&
और ||
शेल ऑपरेटर का उपयोग कैसे कर सकता हूं "?
कई परिचालनों को करने और उक्त ऑपरेटरों का उपयोग करके उनका पीछा करने से; उदाहरण के लिए:
[ 0 -eq 0 -a \( 0 -eq 1 -o 1 -eq 1 \) ]
समकक्ष के रूप में फिर से लिखा जा सकता है:
[ 0 -eq 0 ] && ([ 0 -eq 1 ] || [ 1 -eq 1 ])
या और अच्छा:
[ 0 -eq 0 ] && { [ 0 -eq 1 ] || [ 1 -eq 1 ]; }
(
और)
ऑपरेटरों कि समूह आदेश? यदि वे अप्रचलित हैं, तो उनका प्रतिस्थापन क्या है? (२)test "$1" -a "$2"
द्वाराtest "$1" && test "$2"
या उसके द्वारा प्रतिस्थापित किया जाना चाहिए((test "$1" && test "$2"))
? क्या हमें जरूरत नहीं है((..))
?