Скрипт Bash: цикл while с оператором If приводит к бесконечному циклу - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь написать сценарий bash, который спрашивает, хочет ли человек чашку чая, причем Y возвращает «Отлично, я сейчас сделаю чай» на консоль », а N возвращает« Вы уверены »4 еще несколько раз, прежде чем остановить цикл. Также, если во время 4 последующих предложений пользователь передумает и нажмет «Y», компьютер выведет на консоль сообщение «Отлично, я сделаю чай сейчас».

Мой скрипт, приведенный ниже, приводит к бесконечному циклу, поэтому мне нужно некоторое количество приращений в коде, и я просто не могу понять, где? Возможно, очень простой вопрос, и, если так, извиняюсь, новый для скриптов Linux Bash, любая помощь приветствуется:

#!bin/bash
#tea2.sh
echo "Will you have a cup of tea?"
read answer
while [ "$answer" = n ]
do
  echo "Are you sure"
  if [ "$answer" = y ]
  then
        break
  fi
  echo "Great, I\’ll make tea now"
done

второй скрипт:

#!/bin/bash
#tea3.sh
set yname="Would you like a cup of tea?"
while ($yname != "n")
       echo -n "Are you sure?"
       set yname = $<5
       if ($yname != "y") then
              echo "Great, I\'ll make tea now"
fi
done

1 Ответ

0 голосов
/ 07 мая 2018

Вы никогда не спрашиваете внутри цикла, поэтому ответ никогда не изменится. Отсюда и бесконечный цикл. То, что вы хотите сделать, это read answer внутри цикла (и Use More Quotes ™ ).

Кстати, типографская кавычка, подобная той, которую вы используете, не имеет особого значения в Bash, поэтому ее не нужно экранировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...