2013-11-26 42 views
4

我用這樣的bash腳本菜單:bash腳本:始終顯示循環執行後,菜單

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

每個菜單選擇後我只是得到提示

Please enter your choice: 

我怎麼總是每個選項完成執行後顯示菜單?我已經做了一些環顧四周,我認爲我可以做一些while循環,但我一直無法得到任何工作。

+1

顯示您嘗試過的內容,以便我們幫助您解決問題。 – Mat

回答

12

讓它美麗和用戶友好的;-)

#!/bin/bash 

while : 
do 
    clear 
    cat<<EOF 
    ============================== 
    Menusystem experiment 
    ------------------------------ 
    Please enter your choice: 

    Option (1) 
    Option (2) 
    Option (3) 
      (Q)uit 
    ------------------------------ 
EOF 
    read -n1 -s 
    case "$REPLY" in 
    "1") echo "you chose choice 1" ;; 
    "2") echo "you chose choice 2" ;; 
    "3") echo "you chose choice 3" ;; 
    "Q") exit      ;; 
    "q") echo "case sensitive!!" ;; 
    *) echo "invalid option"  ;; 
    esac 
    sleep 1 
done 

在這個例子中更換回聲與函數調用或調用其他腳本。

+0

我最喜歡這個答案。它運作良好。謝謝。 – EightBall

4

只是修改你的腳本,如下所示。它爲我工作!

#!/bin/bash 
while true 
do 
PS3='Please enter your choice: ' 
options=("Option 1" "Option 2" "Option 3" "Quit") 
select opt in "${options[@]}" 
do 
    case $opt in 
     "Option 1") 
      echo "you chose choice 1" 
      break 
      ;; 
     "Option 2") 
      echo "you chose choice 2" 
      break 
      ;; 
     "Option 3") 
      echo "you chose choice 3" 
      break 
      ;; 
     "Quit") 
      echo "Thank You..."     
      exit 
      ;; 
     *) echo invalid option;; 
    esac 
done 
done