2016-10-22 57 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 

非常感謝!很多人讚賞!