আমি স্টেটমেন্ট টেস্ট |
হিসাবে পৃথক স্ট্রিং সমন্বিত একটি ভেরিয়েবল ব্যবহার করার চেষ্টা করছি case
। উদাহরণ স্বরূপ:
string="\"foo\"|\"bar\""
read choice
case $choice in
$string)
echo "You chose $choice";;
*)
echo "Bad choice!";;
esac
আমি বিবৃতিটির প্রথম অংশটি টাইপ করতে foo
বা bar
প্রয়োগ করতে সক্ষম হতে চাই case
। তবে উভয়ই foo
এবং bar
আমাকে দ্বিতীয়টিতে নিয়ে যান:
$ foo.sh
foo
Bad choice!
$ foo.sh
bar
Bad choice!
"$string"
পরিবর্তে ব্যবহার করে $string
কোনও তফাত হয় না। উভয়ই ব্যবহার করে না string="foo|bar"
।
আমি জানি আমি এটি এইভাবে করতে পারি:
case $choice in
"foo"|"bar")
echo "You chose $choice";;
*)
echo "Bad choice!";;
esac
আমি বিভিন্ন কর্মক্ষেত্রের কথা ভাবতে পারি তবে case
বাশ-এর শর্ত হিসাবে ভেরিয়েবল ব্যবহার করা সম্ভব কিনা তা আমি জানতে চাই । এটি কি সম্ভব এবং যদি তা হয় তবে কীভাবে?
read
কিছুটা আমাকে থামিয়ে দিয়েছে। আমার মতে ব্যবহারকারীর ইনপুট বৈধতা, যা কি এই উপস্থিত হতে পারে হয়, case
নিদর্শন উচিত নয় মূল্যায়ন তালিকার শীর্ষে হতে, এবং বদলে নিচে ছেঁটে দিতে হবে *
ডিফল্ট প্যাটার্ন যেমন যে শুধুমাত্র ফলাফল সেখানে পৌঁছানোর গ্রহণযোগ্য গ্যারান্টী আছে। তবুও, কারণ সমস্যাটি পার্স / এক্সপেনশন অর্ডার, তারপরে দ্বিতীয় মূল্যায়নটি যা ডাকা হবে তা হতে পারে।
eval
, $ পছন্দ, ডান বন্ধনী, তারকাচিহ্ন, সেমিকোলন, এবং নতুন লাইন পলায়নের। কুরুচিপূর্ণ, তবে এটি "কাজ করে"।