这是我的第一个问题,所以我希望我足够清楚 我在案例中的案例中遇到以下问题。 第一个是触发功能的菜单。函数内部还有另一种情况。如果用户选择“否”,他应该返回到第一种情况。 除了启动第一个脚本(包含第一个案例)之外,我还没有找到如何做到这一点:
menu.sh
:
source ./functions.sh
#read answer
while read answer;do
case $answer in
1)
function1
;;
2)
function2
;;
3)
# the same, without function
read -p "do you want to continue [y/n] ?" choice
case $choice in
y|Y)
# DO SOME STUFF
menu.sh
;;
n|N )
./menu.sh
;;
*)
echo "invalid input"
./menu.sh
;;
esac
4)
function4
;;
5)
quit
;;
esac
done
functions.sh
:
function1() {
read -p "do you want to continue [y/n] ?" choice
case $choice in
y|Y)
# DO SOME STUFF and go back to menu
echo "hello"
menu.sh
;;
n|N )
./menu.sh
;;
*)
echo "invalid input"
./menu.sh
;;
esac
}
正如您所看到的,当该功能启动时,它启动了第二种情况,询问用户是否要继续。如果他选择“否”,他可以返回菜单。但按照我的做法,我在盒子里生成了一个 menu.sh 。 更好的解决方案是什么? 预先感谢您的帮助
最佳答案
正如您的代码所示,您无需运行任何内容即可返回菜单。只需删除生成 menu.sh 的行即可。
示例 function1
如下所示:
function1() {
read -p "do you want to continue [y/n] ?" choice
case $choice in
y|Y)
# DO SOME STUFF and go back to menu
echo "hello"
;;
n|N )
;;
*)
echo "invalid input"
;;
esac
}
然后改变
while read answer;do
至
while read -p "Enter a number: " answer;do
这将使您更容易理解事情是如何运作的。
关于 bash : got to the upper imbricated case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37157589/