Извините за заголовок, я не могу придумать лучшего способа задать вопрос без превышения ограничения в 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, но не могу понять это правильно. Любая помощь? Мой первый день использования сценариев оболочки