मैं उलझन में हूँ कि निम्नलिखित कार्यक्रम के लिए बैश स्क्रिप्ट लिखते समय वैकल्पिक तर्क / झंडे को कैसे शामिल किया जाए:
कार्यक्रम के लिए दो तर्क आवश्यक हैं:
run_program --flag1 <value> --flag2 <value>
हालाँकि, कई वैकल्पिक झंडे हैं:
run_program --flag1 <value> --flag2 <value> --optflag1 <value> --optflag2 <value> --optflag3 <value> --optflag4 <value> --optflag5 <value>
मैं बैश स्क्रिप्ट को ऐसे चलाना चाहूंगा कि यह उपयोगकर्ता के तर्क ले ले। यदि उपयोगकर्ता क्रम में केवल दो तर्क देते हैं, तो यह होगा:
#!/bin/sh
run_program --flag1 $1 --flag2 $2
लेकिन अगर कोई वैकल्पिक तर्क शामिल हो तो क्या होगा? मुझे लगता है कि यह होगा
if [ --optflag1 "$3" ]; then
run_program --flag1 $1 --flag2 $2 --optflag1 $3
fi
लेकिन क्या हो अगर $ 4 दिया जाए लेकिन $ 3 नहीं?
getopts
, मुझे प्रत्येक तर्क संयोजन को निर्दिष्ट करने की आवश्यकता होगी? 3 और 4, 3 और 5, 3 और 4 और 5, आदि?
getopts
। मान लीजिए कि मैं उपयोगकर्ताओं को सभी तर्कों के साथ स्क्रिप्ट को चलाने के लिए मजबूर करता हूं: run_program.sh VAL VAL FALSE FALSE FALSE FALSE FALSE
जो कि कार्यक्रम को चलाता है program --flag1 VAL --flag2 VAL
। यदि आप भागते हैं run_program.sh VAL VAL FALSE 10 FALSE FALSE FALSE
, तो कार्यक्रम के रूप में चलेगा program --flag1 VAL --flag2 VAL --optflag2 10
। आप इस तरह का व्यवहार कैसे कर सकते हैं getopts
?
getopts
तुम क्या चाहते हो इसके बिना, आप प्रत्येक ध्वज का पता लगाने के लिए स्विच स्टेटमेंट के साथ एक लूप का उपयोग कर सकते हैं, वैकल्पिक या नहीं।