मैं उलझन में हूँ कि निम्नलिखित कार्यक्रम के लिए बैश स्क्रिप्ट लिखते समय वैकल्पिक तर्क / झंडे को कैसे शामिल किया जाए:
कार्यक्रम के लिए दो तर्क आवश्यक हैं:
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तुम क्या चाहते हो इसके बिना, आप प्रत्येक ध्वज का पता लगाने के लिए स्विच स्टेटमेंट के साथ एक लूप का उपयोग कर सकते हैं, वैकल्पिक या नहीं।