নিম্নলিখিত প্রোগ্রামের জন্য ব্যাশ স্ক্রিপ্ট লেখার সময় আমি কীভাবে 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চ্ছিক বা না সনাক্ত করতে একটি স্যুইচ স্টেটমেন্ট সহ একটি লুপ ব্যবহার করতে পারেন।