Необходимо написать сценарий «thirsty.sh»: BASH

Хорошо, у меня есть весь код, и он работает. У меня просто возникают проблемы с while loop

 #asking the user if they are "thirsty". echo "Are you thirsty?" #creating thirsty variable read thirsty #if user answers 'no'/'No'/'NO'/'n'/'N'. if [ "$thirsty" == "no" ] || [ "$thisrty" == "No" ] || [ "$thisrty" == "N" ] || [ "$thisrty" == "n" ] || [ "$thisrty" == "NO" ]; then echo "Okay, thank you for coming. Have a nice day." exit fi #if user answers 'yes'/'Yes'/'YES'/'y'/'Y' while [ "$thirsty" != "yes" ]; do if [ "$thirsty" == "yes" ] || [ "$thisrty" == "Yes" ] || [ "$thisrty" == "YES" ] || [ "$thisrty" == "y" ] || [ "$thisrty" == "Y" ]; then echo "Okay, what would you like to drink?" echo "We have: water, beer, wine, and anything else you can think of." read drink if [ "$drink" == "water" ]; then echo "Clear crisp and refreshing" elif [ "$drink" == "beer" ]; then echo "Let me see some ID" elif [ "$drink" == "wine" ]; then echo "One box or two?" else echo "Coming right up..." fi fi done 

Мне нужен цикл while, чтобы запустить скрипт, если они не отвечают на один из «да» или один из «нет» …

  • Фоновая и передняя задача и выполнение задач параллельно
  • Как скриптировать эту функцию массового переименования?
  • Запуск команды после подключения моего клиента OpenVPN
  • Как сделать ключ переключения с помощью Autokey?
  • Сценарий для изменения текущего каталога (cd, pwd)
  • Как копировать, выполнять и извлекать данные с удаленного компьютера?
  • Как разобрать вывод для конкретного ответа (создание атрибута расширения для JAMF JSS)
  • Сценарий Bash работает через терминал, но не через главное меню
  • 3 Solutions collect form web for “Необходимо написать сценарий «thirsty.sh»: BASH”

    Первое, что я вижу, это то, что в вашем скрипте есть несколько опечаток со словом «жажда», и это мешает ему работать должным образом. Search & Replace для слова «thisrty» для правильного слова «жаждущий».


    Кроме того, я не уверен, если вы захотите добавить в свой код еще несколько вещей, но так, как сейчас, вы можете просто заменить свое время на цикл infine и удалить «if», который следует сразу после , потому что переменная «жажда» никогда не изменит свою ценность, например:

     #asking the user if they are "thirsty". echo "Are you thirsty?" #creating thirsty variable read thirsty #if user answers 'no'/'No'/'NO'/'n'/'N'. if [ "$thirsty" == "no" ] || [ "$thirsty" == "No" ] || [ "$thirsty" == "N" ] || [ "$thirsty" == "n" ] || [ "$thirsty" == "NO" ]; then echo "Okay, thank you for coming. Have a nice day." exit fi while [ 1 ]; do echo "Okay, what would you like to drink?" echo "We have: water, beer, wine, and anything else you can think of." read drink if [ "$drink" == "water" ]; then echo "Clear crisp and refreshing" elif [ "$drink" == "beer" ]; then echo "Let me see some ID" elif [ "$drink" == "wine" ]; then echo "One box or two?" else echo "Coming right up..." fi done 

    Вы можете изменить свой код, чтобы использовать функцию для запроса ввода пользователя (игрока?).

     is_thirsty() { echo """ Are you thirsty (Yes/No)?' """ while : do read -p '>' thirsty case ${thirsty^^} in NO|N) return 1 ;; YES|Y) return 0 ;; *) echo -n '(Yes/No)' ;; esac done } 

    Это пример использования:

     choose_drink() { echo """ Okay, what would you like to drink? We have: water, beer, wine and anything else you can think of. """ read -p '>' drink case ${drink^^} in WATER) echo "Clear crisp and refreshing" ;; BEER) echo "Let me see some ID" ;; WINE) echo "One box or two?" ;; *) echo "Coming right up..." ;; esac } goodbye() { echo "Okay, thank you for coming. Have a nice day." } is_thirsty && choose_drink || goodbye 

    Я думаю, вы ищете что-то вроде этого

     # Make thirsty an uppercase variable typeset -u thirsty # Initialize thirsty thirsty="INIT" while [ "$thirsty" != "YES" || "$thirsty" != "Y" || "$thirsty" != "NO" || "$thirsty" != "N" ] do #asking the user if they are "thirsty". echo "Are you thirsty?" #creating thirsty variable read thirsty #if user answers 'no'/'No'/'NO'/'n'/'N'. if [ "$thirsty" == "NO" ] || [ "$thisrty" == "N" ]; then echo "Okay, thank you for coming. Have a nice day." exit fi #if user answers 'yes'/'Yes'/'YES'/'y'/'Y' while [ "$thirsty" != "YES" ]; do if [ "$thirsty" == "YES" ] || [ "$thisrty" == "Y" ]; then echo "Okay, what would you like to drink?" echo "We have: water, beer, wine, and anything else you can think of." read drink if [ "$drink" == "water" ]; then echo "Clear crisp and refreshing" elif [ "$drink" == "beer" ]; then echo "Let me see some ID" elif [ "$drink" == "wine" ]; then echo "One box or two?" else echo "Coming right up..." fi fi done done 

    Попробуй и скажи мне, что ты думаешь.

    Надеюсь это поможет.

    Linux и Unix - лучшая ОС в мире.