2013-11-26 39 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