নিম্নলিখিত প্রোগ্রামের জন্য ব্যাশ স্ক্রিপ্ট লেখার সময় আমি কীভাবে alচ্ছিক যুক্তি / পতাকাগুলি অন্তর্ভুক্ত করব তা নিয়ে আমি বিভ্রান্ত হয়ে পড়েছি:
প্রোগ্রামটির জন্য দুটি যুক্তি প্রয়োজন:
run_program --flag1 <value> --flag2 <value>
তবে, বেশ কয়েকটি alচ্ছিক পতাকা রয়েছে:
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চ্ছিক যুক্তিগুলির কোনও যদি অন্তর্ভুক্ত থাকে তবে কী হবে? আমি মনে হবে এটা হবে
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
আপনি কি চান তা ছাড়া, আপনি প্রতিটি পতাকা সনাক্ত করতে toচ্ছিক বা না সনাক্ত করতে একটি স্যুইচ স্টেটমেন্ট সহ একটি লুপ ব্যবহার করতে পারেন।