2016-02-04 47 views
0

有没有办法让下面的bash脚本在之前显示它的选择菜单而不是之后的两个提示 有没有在这个Bash脚本菜单中显示提示的方法?

谢谢。

#!/usr/bin/env bash 

PS3='Copy database to which server? ' 
options=("debug" "dev" "prod" "Quit") 
select server in "${options[@]}" 
do 
    case $server in 
     "debug") 
      break 
      ;; 
     "dev") 
      break 
      ;; 
     "prod") 
      break 
      ;; 
     "Quit") 
      echo "Quitting" 
      exit 1 
      ;; 
     *) echo "Invalid option";; 
    esac 
done 

PS3='Reuse existing user data or get fresh data? ' 
options=("existing" "fresh" "Quit") 
select data in "${options[@]}" 
do 
    case $data in 
     "existing") 
      break 
      ;; 
     "fresh") 
      break 
      ;; 
     "Quit") 
      echo "Quitting" 
      exit 1 
      ;; 
     *) echo "Invalid option";; 
    esac 
done 

echo "You chose "$server" and "$data 
exit 1 
+0

只是改变'PS3 =''到回声'?祝你好运。 – shellter

回答

0

是...你可以在任何时候echo写文字给用户:

echo 'Copy database to which server?' 
options=("debug" "dev" "prod" "Quit") 
select server in "${options[@]}" 
do 
    case $server in 
     "debug") 
      break 
      ;; 
     "dev") 
      break 
      ;; 
     "prod") 
      break 
      ;; 
     "Quit") 
      echo "Quitting" 
      exit 1 
      ;; 
     *) echo "Invalid option";; 
    esac 
done 

这将使你:

Copy database to which server? 
1) debug 
2) dev 
3) prod 
4) Quit 
#? 
+0

是的,我想到了,但我不喜欢“#?”提示。这有点丑。不幸的是,我的Bash功夫很弱。 – William

+0

使用'PS3 ='>''将提示设置为你想要的然后 –

+0

Gotcha。谢谢! – William