Este script mais simples deve funcionar para você
#!/bin/bash
menu_choice=0
quit_program=false
while [ $quit_program == false ]
do
printf "1. Backup\n"
printf "2. Display\n"
printf "3. Exit\n\n"
printf "Enter choice: \n"
read menu_choice
if [ $menu_choice -eq 3 ]
then
printf "Are you sure you want to quit? (y/n) "
read ask
if [ $ask == "y" ]
then
quit_program=true
fi
fi
done
printf "\nDone\n"
Não há necessidade de verificar o menu_choice
, para que possa ser removido da verificação do loop while.
No meu exemplo acima, eu apenas configurei um booleano de quit_program
que é verificado no loop. Se o usuário escolher a opção 3 e, em seguida, disser "y" para a confirmação, o booleano será configurado como true para eliminar o loop.
Você também pode ir mais longe sem verificar um booleano com isso:
#!/bin/bash
menu_choice=0
while true
do
printf "1. Backup\n"
printf "2. Display\n"
printf "3. Exit\n\n"
printf "Enter choice: \n"
read menu_choice
if [ $menu_choice -eq 3 ]
then
printf "Are you sure you want to quit? (y/n) "
read ask
if [ $ask == "y" ]; then break; fi
fi
done
printf "\nDone\n"
Este segundo exemplo realiza a mesma coisa, mas o loop while
é executado sem verificar o booleano de antes. O loop é quebrado com o comando break
.