对话框:执行选项后显示菜单

时间:2016-10-22 14:21:15

标签: linux bash dialog

我希望有人可以帮我解决问题。

我希望获得与下面的代码相同的结果,但使用对话框。

#!/bin/bash
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option3" "Quit")
select opt in "${options[@]}"
do
    case $opt in
        "Option 1")
            sudo apt-get update
            ;;
        "Option 2")
            echo "you chose choice 2"
            ;;
        "Option 3")
            echo "you chose choice 3"
            ;;
        "Quit")
            break
            ;;
        *) echo invalid option;;
    esac
done

请参阅下面的对话框代码:

#!/bin/bash

HEIGHT=15
WIDTH=40
CHOICE_HEIGHT=4
BACKTITLE="Backtitle here"
TITLE="Title here"
MENU="Choose one of the following options:"

OPTIONS=(1 "Option 1"
         2 "Option 2"
         3 "Option 3")

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

clear
case $CHOICE in
        1)
          sudo apt-get update
             ;;
        2)
            echo "You chose Option 2"
            ;;
        3)
            echo "You chose Option 3"
           ;;
esac

基本上在选择选项1后,我希望再次提示相同的菜单。

非常感谢您的帮助。

亲切的问候。

2 个答案:

答案 0 :(得分:1)

您可以将对话框部分插入while循环

#!/bin/bash

HEIGHT=15
WIDTH=40
CHOICE_HEIGHT=4
BACKTITLE="Backtitle here"
TITLE="Title here"
MENU="Choose one of the following options:"

OPTIONS=(1 "Option 1"
         2 "Option 2"
         3 "Option 3"
         4 "Quit")

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

    clear
    case $CHOICE in
            1)
                sudo apt-get update
                ;;
            2)
                echo "You chose Option 2"
                ;;
            3)
                echo "You chose Option 3"
                ;;
    esac
done

答案 1 :(得分:1)

太棒了,我找到了它:“”

中遗失的地方
$CHOICE -ne 4

所以正确的行是:

while [ "$CHOICE -ne 4" ]; do

非常感谢!很多人赞赏!