加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash脚本中的多选菜单

发布时间:2020-12-15 18:44:20 所属栏目:安全 来源:网络整理
导读:我是一个bash新手,但我想创建一个脚本,我希望允许用户从选项列表中选择多个选项. 基本上我想要的是类似于下面的例子: #!/bin/bash OPTIONS="Hello Quit" select opt in $OPTIONS; do if [ "$opt" = "Quit" ]; then echo done exit elif [ "$opt" = "Hello"
我是一个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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读