में कमांड लाइन ध्वज की जांच करने का सही तरीका एक स्क्रिप्ट के बीच में, मैं यह जांचना चाहता हूं कि कमांड लाइन पर दिया गया ध्वज पारित किया गया हो या नहीं। निम्नलिखित जो मैं चाहता करती है, लेकिन बदसूरत लगता है:बैश
if echo $* | grep -e "--flag" -q
then
echo ">>>> Running with flag"
else
echo ">>>> Running without flag"
fi
वहाँ एक बेहतर तरीका है?
नोट: मैं स्पष्ट रूप से स्विच/गेटोपट में सभी झंडे सूचीबद्ध करना चाहता हूं। (इस मामले में ऐसी कोई चीजें पूर्ण स्क्रिप्ट का आधा या अधिक हो जाएंगी। इसके अलावा यदि शरीर केवल वर्रों का एक सेट सेट करता है)
बाह्य 'getopt' के बजाय बिल्टिन' गेटोपेट्स 'का उपयोग करना बेहतर है। –
@ डेनिस: 'गेटोपेट्स' लंबे विकल्प नामों का समर्थन करता है जैसे '--flag'? – indiv
@indiv: ओह, क्षमा करें, मैंने उस आवश्यकता को अनदेखा किया। मैं 'getopt' का उपयोग करने से पहले 'केस' कथन का उपयोग करूंगा। 'Getopt' और' getopts' की तुलना के लिए [this] (http://aplawrence.com/Unix/getopts.html) देखें। –