Shell Script переходит к следующему вопросу, даже если ему дан неправильный ответ - PullRequest
0 голосов
/ 05 мая 2020

Извините за заголовок, я не могу придумать лучшего способа задать вопрос без превышения ограничения в 150 символов

make_donut (){
        creates donut
}

add_sprinkles (){
        adds sprinkles to donut
}

while true; do
    read -p "Would you like a donut? " yn
    case $yn in
        [Yy]* ) make_donut;
                echo "Here's a donut.";;
        [Nn]* ) echo "Okay, goodbye.";
                exit;;
        * ) echo "Please answer yes or no. ";;
    esac
    read -p "Would you like sprinkles? " yn
    case $yn in
        [Yy]* ) add_sprinkles;
                echo "I added sprinkles, here you go.";
                break;;
        [Nn]* ) echo "Okay, here's your donut w/o sprinkles"
                exit;;
        * ) echo "Please answer yes or no. ";;
    esac
done 

Итак, цель состоит в том, чтобы пользователя спросили, они хотят пончик, если они скажут «да», их спросят, не хотят ли они посыпать. Если они говорят «нет», то код выходит. Проблема в том, что если пользователя спросят, хотят ли они пончик, и он ответит чем угодно, кроме «да» или «нет», ему будет сказано: «Пожалуйста, ответьте да или нет», но затем он все равно перейдет к следующему вопросу: «Не могли бы вы как брызги ", чего я не хочу. Я хочу, чтобы он продолжал спрашивать, хотят ли они пончик, пока они не дадут ответ «да» или «нет», а затем продолжайте. Некоторое время я пытался вложить l oop или использовать оператор if, но не могу понять это правильно. Любая помощь? Мой первый день использования сценариев оболочки

...