#!/bin/bash
# Bash Menu Script Example
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
echo "you chose choice 1"
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice $REPLY which is $opt"
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done
যোগ break
বিবৃতি যেখানেই থাকুন না কেন আপনি প্রয়োজন select
লুপ থেকে প্রস্থান করার জন্য। যদি একটি break
সম্পাদনা না করা হয়, select
বিবৃতিটি লুপ করে এবং মেনুটি পুনরায় প্রদর্শিত হয়।
তৃতীয় বিকল্পে, আমি সেই ভেরিয়েবলগুলি অন্তর্ভুক্ত করেছি যেগুলি select
বিবৃতি দ্বারা সেট করা আছে তা প্রমাণ করতে যে আপনার সেই মানগুলিতে অ্যাক্সেস রয়েছে। আপনি যদি এটি চয়ন করেন তবে এটি আউটপুট দেবে:
you chose choice 3 which is Option 3
$REPLY
প্রম্পটে আপনি যে স্ট্রিংটি দিয়েছিলেন তা আপনি দেখতে পাচ্ছেন । এটি অ্যারেতে সূচক হিসাবে ব্যবহৃত হয় যেন অ্যারেটি ${options[@]}
1 ভিত্তিক হয়। পরিবর্তনশীল $opt
অ্যারেতে সূচক থেকে স্ট্রিং থাকে।
নোট করুন যে পছন্দগুলি সরাসরি select
বিবৃতিতে একটি সাধারণ তালিকা হতে পারে :
select opt in foo bar baz 'multi word choice'
তবে আপনি পছন্দগুলির মধ্যে একটিতে ফাঁকা থাকার কারণে আপনি কোনও স্কেলার ভেরিয়েবলের মধ্যে এ জাতীয় তালিকা রাখতে পারবেন না।
আপনি যদি ফাইলগুলির মধ্যে বেছে নিচ্ছেন তবে আপনি ফাইল গ্লোব্বিং ব্যবহার করতে পারেন:
select file in *.tar.gz
seq 10 | fzf
। অপূর্ণতা হ'ল fzf ডিফল্টরূপে ইনস্টল করা হয় না। আপনি এখানে fzf খুঁজে পেতে পারেন: github.com/junegunn/fzf