【问题标题】:Running Dialog inside a loop在循环中运行对话框
【发布时间】:2019-11-17 21:32:45
【问题描述】:

我有这个简单的 shell 脚本,我在其中使用 Linux 程序 Dialog 为基本的 switch-case 结构制作动态图形菜单。我使用以下参数启动程序:

CHOICE=$(dialog --clear \
         --backtitle "$BACKTITLE" \
         --title "$TITLE" \
         --menu "$MENU" \
         $HEIGHT $WIDTH $CHOICE_HEIGHT \
         "${OPTIONS[@]}" \
         2>&1 >/dev/tty)

一旦我选择了我的开关结构的任何选项,对话框就会退出。我想在一个循环中运行它,只有当我按下 cancel 按钮时它才会退出。如果我将整个脚本放在一个 while true-loop 中,那么一旦我选择 Cancel,它就不会退出。

如何创建一个可以通过选择取消退出的循环?做这件事最有意义的方法是什么? Cancel 是否返回一些值,我可以将其用作循环的参数,以便可以将其中断?

【问题讨论】:

    标签: linux bash shell loops dialog


    【解决方案1】:

    来自man dialog

    如果按下取消按钮(或 ESC),则不会写入任何文本;对话框立即退出

    是的,你可以在你的情况下做一个循环,你会测试是否为空。

    一个例子

    CHOICE="foobar" ; 
    while [ -n  "$CHOICE"  ] ; 
    do
       CHOICE=$(dialog --clear \
             --backtitle "$BACKTITLE" \
             --title "$TITLE" \
             --menu "$MENU" \
             $HEIGHT $WIDTH $CHOICE_HEIGHT \
             "${OPTIONS[@]}" \
             2>&1 >/dev/tty)
       if [ -n "$CHOICE" ]
       then
          reset
          echo "${CHOICE}"
          sleep 5 
       fi
    done
    

    【讨论】:

    • 可能是echo "${CHOICE}"?
    猜你喜欢
    • 1970-01-01
    • 2015-01-07
    • 2017-03-03
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多