我正在开发一个多级菜单,我想实现子菜单和子子菜单返回上一个菜单或直接返回主菜单的功能。请参见下文...
[Menu]
1 - Option 1
2 - Option 2
3 - Quit (exit command)
Please choose option:
#Under Option 1
1 - Sub-Option 1
2 - Sub-Option 2
3 - back to main menu
#Under Sub-Option 1
1 - Sub-sub Option 1
2 - Sub-sub Option 2
3 - back to Sub-option menu
4 - back to main menu
我当前的代码将每个菜单保留在单独的函数中。我在下面包含了我的子选项菜单...
suite_menu() {
show_suite_menu
read -p "Pick Number> " choice
case $choice in
1) echo "1 selected."
fullsuite_menu ;;
2) echo "2 selected."
fullsuite_menu ;;
3) echo "3 selected."
fullsuite_menu ;;
0) break;;
*) echo "Invalid choice, please try again";;
esac
}
我该如何编写子子选项菜单,让选项 3 进入上方菜单,让选项 0 进入主菜单?提前致谢 <3
最初的想法是维护菜单/功能的某种调用堆栈,使用返回代码(或更可能是变量设置)确定“父”菜单/功能在从子菜单/功能调用返回时如何运行。如果需要维护某种递归数据集(例如,在“向下”时附加数据,在“向上”时删除数据),我可能会考虑类似的东西,但 OP 的问题中没有任何内容表明这种级别的数据操作,所以...
一种简单的方法是让每个菜单选项/操作指定要调用的“下一个”命令(例如
break
, ),并在顶层<function_name>
使用简单循环执行“下一个”命令。while true
使用一些详细的代码实现 OP 的示例菜单
bash
,其中未定义的操作/菜单作为简单echo
调用实现:笔记:
select
、使用单个“通用”菜单函数,该函数使用输入参数来访问特定菜单的项目/操作(存储在数组中)等while true
循环执行“下一个”操作进行试驾:
执行所有菜单选项的输出:
你选择了一个答案,但这是我的解决方案。