在 bash 中创建嵌套菜单

Sel*_*mez 2 bash

我想在选择时在选项“a”下创建更多菜单。如果用户输入选项“a”,我希望它有几个菜单供您选择,其中一个选项是返回“主菜单”。这是我遇到的两个问题。我尝试为此处的菜单执行与下面相同的格式,并将其放在“A”代码块下,但这不起作用。

#!/bin/bash

ok=0;

while ((ok==0))
do
echo "Main Menu:"
echo -e "\t(a) More Menu Options "
echo -e "\t(b) Exit"
echo -n "Please enter your choice:"
read choice
case $choice in
    "a"|"A")
    ok=1

    ;;
    "b"|"B")
    exit
    ;;
        *)
        echo "invalid answer, please try again"
        ;;

esac
done
Run Code Online (Sandbox Code Playgroud)

Dan*_*ela 5

为什么不把同样的循环放在里面呢?

#!/bin/bash

while :
do
echo "Main Menu:"
echo -e "\t(a) More Menu Options "
echo -e "\t(b) Exit"
echo -n "Please enter your choice:"
read choice
case $choice in
    "a"|"A")
    while :
    do
    echo "Secondary menu"
    echo -e "\t(c) Print this menu again"
    echo -e "\t(d) Return to main menu"
    echo -n "Please enter your choice:"
    read choice1
    case $choice1 in
        "c"|"C")
        ;;
        "d"|"D")
        break
        ;;
            *)
            echo "invalid answer, please try again"
            ;;
    esac
    done
    ;;
    "b"|"B")
    exit
    ;;
        *)
        echo "invalid answer, please try again"
        ;;

esac
done
Run Code Online (Sandbox Code Playgroud)

还有select创建菜单的命令:

select i in ant bee cat
do 
    echo $i
    break
done
Run Code Online (Sandbox Code Playgroud)

让我们运行它:

$ select i in ant bee cat; do echo $i; break; done
1) ant
2) bee
3) cat
#? 2
bee
Run Code Online (Sandbox Code Playgroud)