Необходимо написать сценарий «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, чтобы запустить скрипт, если они не отвечают на один из «да» или один из «нет» …

  • Назначение выбора текста переменной в сценарии bash
  • проанализировать действительно простую грамматику разметки со сценарием оболочки
  • Использование xargs с вводом из файла
  • Sanitize файлы журнала доступа Apache?
  • Сценарий для изменения текущего каталога (cd, pwd)
  • Использование базового имени текущего пути для определения нового файла
  • В чем разница между POSIX и bash и другими сценариями оболочки?
  • Перезаписать файл с использованием AWK в цикле for
  • 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 

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

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

    Interesting Posts

    Получение конкретной линии с вывода терминала

    Укажите монитор для консоли Linux

    Как предоставить все права на пользователя пользователю ubuntu 12.04

    Как я могу предотвратить использование sudoer главного ключа LUKS?

    Устранение блокировок таймера блокировки Ethernet

    Только для чтения файловой системы, которая позволяет также временно записывать в другое место назначения

    Как создать img-образ, достаточно большой для хранения одного конкретного файла?

    Как исправить фрагментированный диск – миф или правду?

    Создайте новый текстовый файл с суммой третьего столбца нескольких других

    Как разместить панель инструментов наверху в fluxbox?

    остановка команды терминала gnome-open от открытия файлов как максимальная

    Как я могу найти фактический (dd) размер флеш-диска?

    Файлы журнала приложений в журнал systemd

    Переключение между рабочим процессом cli и vim и другими файлами

    Требует ли Linux паролей для дешифрования и входа в систему, чтобы они были одинаковыми?

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