这是我的第一个问题,所以我希望我足够清楚 在箱子里面有一个箱子有以下问题。 第一个是触发功能的菜单。在函数内部有另一个案例。如果用户选择NO,他应该回到第一种情况。 除了启动第一个脚本(包含第一个案例:
)之外,我还没有找到如何做到这一点 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。 什么是更好的解决方案? 提前感谢您的帮助
答案 0 :(得分:2)
当您的代码布局时,您无需运行任何内容即可返回菜单。只需删除您在其中生成 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
这将使人们更容易理解事情是如何运作的。