Я хочу создать больше меню под опцией "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
Почему бы не вставлять тот же цикл?
#!/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
Попробуйте это:
#!/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