2016-10-22 50 views
0

我希望有人能帮我解决我的问题。对话框:选项执行后的显示菜单

我想达到与下面的代码相同的结果,但使用对话框。

#!/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,例如后基本上我希望得到相同的菜单再次提示。

非常感谢您的友善帮助。

亲切的问候。

回答

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 
+0

嗨加拉,非常感谢您的亲切帮助。 – albertone74

+0

我试过了你的代码,但是我得到这个错误信息: – albertone74

+0

./test.sh:line 15:[:-ne:一元运算符预计 – albertone74

1

太好了,我发现它: “” 凡在

$CHOICE -ne 4 

失踪所以正确的路线是:

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

非常感谢!很多人赞赏!