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

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 

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

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

  • Выполнение задания Cron в неправильный день
  • Запуск скрипта сразу после входа в систему перед чтением / etc / motd
  • Как скопировать несколько файлов, но сохранить их расширения одинаково?
  • Скачайте несколько тысяч файлов - как?
  • Переименование и очистка имен файлов телепередач - S01E01.mp4 и т. Д.
  • Как выполнить повторяющийся сценарий Bash в определенное время?
  • Замена шаблонов
  • Cron Bash Script - эхо на текущий терминал вместо / var / spool / mail / root
  • сценарий оболочки для чтения из нескольких файлов параллельно
  • Команда для перемещения окна на все рабочие столы
  • Тест веб-камеры Debian / Raspberry usb перед выпуском скрипта fswebcam, множественный сбой приведет к сбою ОС
  • Linux и Unix - лучшая ОС в мире.