#!/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