Выйти из инструкции bash switch

Я написал сценарий bash, управляемый меню, который использует case switch внутри цикла while для выполнения различные варианты меню. Все работает нормально. Сейчас я пытаюсь улучшить программу, выполняя проверку ошибок при вводе пользователем, но мне кажется, что я не могу заставить ее работать ...

Проблема в том, что я не знаю, как правильно выйти из оператора switch, без выхода из цикла while (чтобы пользователь мог повторить попытку).

# repeat command line indefinitely until user quits
while [ "$done" != "true" ]
do
   # display menu options to user
   echo "Command Menu" # I cut out the menu options for brevity....

   # prompt user to enter command
   echo "Please select a letter:"
   read option

   # switch case for menu commands, accept both upper and lower case
   case "$option" in

   # sample case statement
   a|A) echo "Choose a month"
        read monthVal
        if [ "$monthVal" -lt 13 ]
        then 
           cal "$monthVal"
        else
           break # THIS DOES NOT WORK. BREAKS WHILE LOOP, NOT SWITCH!
        fi
        ;;
   q|Q) done="true" #ends while loop
        ;;
   *)   echo "Invalid option, choose again..."
        ;;
   esac
done
exit 0

Программа работает нормально, когда пользователь вводит допустимое значение месяца, но если он вводит число больше 13, вместо того, чтобы прерывать оператор switch и повторять повторяется цикл, программа разрывает и переключатель, и цикл while и прекращает выполнение.

6
задан Moses 12 August 2011 в 01:44
поделиться