此主题还有另一个主题,但已关闭。我想重新查看。我正在尝试为自己编写一个实用脚本。但是我不是程序员,所以我想得到一些反馈。虽然我很感谢其他人的帮助,但我不想离题太远,不得不阅读一堆东西。我的需求非常具体。
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option3" "Quit")
select opt in "${options[@]}"
do
case $opt in
if [ "$RESP" = "y" ]; then
action here
else
echo "Thank you."
sleep 2
exit;
fi
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice 3"
;;
"Quit")
break
;;
*) echo invalid option;;
esac
done
我如何从退出;或 fi 返回菜单?
非常感谢,
答案1
"Option 1")
首先,你的 之前少了一个案例if
。并且"Option3"
你的选项列表中缺少一个空格:应该是"Option 3"
。
除此之外,我真的不明白你的问题。问题是什么?一旦修复了这些问题,它似乎对我有用。下面是一次测试运行。澄清一下,exit
退出脚本并将用户返回到他们的 shell 提示符。如果你想留在脚本中,请不要使用exit
。
ace@ace2:~$ ./test.sh
1) Option 1
2) Option 2
3) Option 3
4) Quit
Please enter your choice: 1
Thank you.
ace@ace2:~$ RESP="y" ./test.sh
1) Option 1
2) Option 2
3) Option3
4) Quit
Please enter your choice: 1
you chose choice 1
Please enter your choice: 2
you chose choice 2
Please enter your choice: 3
you chose choice 3
Please enter your choice: 4
ace@ace2:~$
以下是代码:
#!/bin/bash
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
if [ "$RESP" = "y" ]; then
echo "you chose choice 1"
else
echo "Thank you."
sleep 2
exit
fi
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice 3"
;;
"Quit")
break
;;
*)
echo invalid option
;;
esac
done