Создание вложенных меню в ударе

Я хочу создать больше меню под опцией "a" при выборе. Если пользователь ввел опцию "a", я хочу, чтобы она имела пару меню для Вас для выбора, и для одной из опций должен возвратиться к "Главному меню". Это - эти 2 проблемы, из-за которых я испытываю затруднения. Я пытался делать этот тот же формат, который я имею ниже для меню здесь и подвергаю его "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
1
задан 27 March 2014 в 08:49

2 ответа

Почему бы не вставлять тот же цикл?

#!/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

существует также select команда, которая создает меню:

select i in ant bee cat
do 
    echo $i
    break
done

Позволяют нам выполнить его:

$ select i in ant bee cat; do echo $i; break; done
1) ant
2) bee
3) cat
#? 2
bee
3
ответ дан 10 November 2019 в 19:38

Попробуйте это:

#!/bin/bash

submanual(){
while :
do
echo "sub Menu:"
echo -e "\t(x) Options 1"
echo -e "\t(y) Options 1"
echo -e "\t(e) Back"
echo -n "Please enter your choice:"
read c
case $c in
    "x"|"X")
    # Options 1 and its commands
    ;;
    "y"|"Y")
    # Options 2 and its commands
    ;;
    "e"|"E")
    break
    ;;
        *)
        echo "invalid answer, please try again"
        ;;
esac
done
}

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")
    submanual
    ;;
    "b"|"B")
    exit
    ;;
        *)
        echo "invalid answer, please try again"
        ;;

esac
done
0
ответ дан 10 November 2019 в 19:38

Другие вопросы по тегам:

Похожие вопросы: