我已经厌倦了输入长命令来做简单的事情,所以我写了这个简短的Bash菜单脚本来加快速度:
#!/usr/bin/env bash
PS3="Nginx? "
options=("start", "stop", "status", "exit")
select opt in "${options[@]}"
do
case $opt in
"start")
sudo service nginx start
;;
"stop")
sudo service nginx stop
;;
"status")
sudo service nginx status
;;
"exit")
echo "Exiting"
exit 1
;;
*) echo "Invalid selection";;
esac
done
正确显示菜单:
1) start
2) stop
3) status
4) exit
但只有选项4退出才能正常工作。当我点击1,2或3时,我得到“无效选择”。我是否错误地输入了sudo命令?谢谢。
答案 0 :(得分:3)
此代码显示的实际菜单不是您在问题中提供的,而是:
1) start,
2) stop,
3) status,
4) exit
这种差异 - 前三项末尾的逗号 - 很有启发性。
这是一个数组语法声明问题。拿出逗号:
options=( "start" "stop" "status" "exit" )
顺便说一下,因为你的内容都是没有全局字符的单字文字,所以引号不做任何事情;这写起来也是正确的:
options=( start stop status exit )
原始代码不接受start
但start,
;不是stop
,而是stop,
。