我是一个bash新手,但我想创建一个脚本,我希望允许用户从选项列表中选择多个选项.
基本上我想要的是类似于下面的例子:
#!/bin/bash OPTIONS="Hello Quit" select opt in $OPTIONS; do if [ "$opt" = "Quit" ]; then echo done exit elif [ "$opt" = "Hello" ]; then echo Hello World else clear echo bad option fi done
(来自http://www.faqs.org/docs/Linux-HOWTO/Bash-Prog-Intro-HOWTO.html#ss9.1)
但是我的脚本会有更多选项,我想允许选择倍数.所以这样的事情:
1)选项1
2)选项2
3)选项3
4)选项4
5)完成
对他们选择的那些反馈意见也很好,例如,他们已经选择的标志旁边加上标志.例如,如果您选择“1”,我想要翻页以清除并重新打印:
1) Option 1 + 2) Option 2 3) Option 3 4) Option 4 5) Done
然后,如果您选择“3”:
1) Option 1 + 2) Option 2 3) Option 3 + 4) Option 4 5) Done
此外,如果他们再次选择(1)我希望它“取消选择”选项:
1) Option 1 2) Option 2 3) Option 3 + 4) Option 4 5) Done
最后当按下Done时,我想要在程序退出之前选择要显示的列表,如果当前状态是:
1) Option 1 2) Option 2 + 3) Option 3 + 4) Option 4 + 5) Done
按5应打印:
Option 2,Option 3,Option 4
…脚本终止.
所以我的问题 – 这是否可能在bash中,如果有的话,是否有人能够提供代码示例?
任何建议将不胜感激.
我想你应该看看
dialog或
whiptail.
编辑:
这是一个使用您问题中的选项的示例脚本:
#!/bin/bash cmd=(dialog --separate-output --checklist "Select options:" 22 76 16) options=(1 "Option 1" off # any option can be set to default to "on" 2 "Option 2" off 3 "Option 3" off 4 "Option 4" off) choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty) clear for choice in $choices do case $choice in 1) echo "First Option" ;; 2) echo "Second Option" ;; 3) echo "Third Option" ;; 4) echo "Fourth Option" ;; esac done