Как использовать пользовательский ввод как условие цикла while

Я могу сделать это в bash:

while read -n1 -r -p "choose [y]es|[n]o" do if [[ $REPLY == q ]]; then break; else #whatever fi done 

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

 while [[ `read -n1 -r -p "choose [y]es|[n]o"` != q ]] do #whatever done 

One Solution collect form web for “Как использовать пользовательский ввод как условие цикла while”

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

 while read -n1 -r -p "choose [y]es|[n]o" && [[ $REPLY != q ]]; do case $REPLY in y) echo "Yes";; n) echo "No";; *) echo "What?";; esac done 

(Это выходит из цикла, если вход равен q или если обнаружено условие конца файла.)

  • Изменение подсказки bash в зависимости от того, является ли первый символ пробелом
  • Как обрабатывать обратные стрелки, клавиши «Конец» и «Домой» в приглашении на чтение
  • Почему некоторые оболочки `read` builtin не могут прочитать всю строку из файла в` / proc`?
  • Скорость чтения из смонтированного каталога
  • Как читать команды из файла?
  • Символ ложных @ в начале подсказки bash в Debian Jessie
  • Как подавить эхо функции проверки ошибок
  • Понимание встроенного чтения
  • Используя sed с herestring (<<<) и прочитайте -a
  • Запустите сценарий оболочки и прочитайте вывод в переменной и запустите другой скрипт на основе вывода
  • Как читать с другого терминала?
  • Interesting Posts

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

    Замените длинную строку командой sed: слишком длинная ошибка списка аргументов

    Что делает оператор запятой в арифметике Баша?

    Как автозаполнение проигнорировать конкретное завершение

    _update-rc.d vncserver-x11-serviced defaults_ COMMAND = Между запуском службы rc.local и mountkernfs существует цикл. ERROR

    Масштабировать частоту процессора в CLI?

    Добавление латентности при доступе к определенным веб-сайтам под Linux

    Установка haskell-платформы без привлечения X-сервера

    Привяжите `SPACE` к` CTRL`, нажав / отпустив `SPACE` до" "

    Разрешение отклонено при использовании -exec {} ls с командой find

    Разрешение каталога Setuid подразумевает разрешение на выполнение?

    Как читать переменные среды процесса

    Что делать, чтобы запустить приложение GUI Java в chrooted среде?

    Консольный экран без X11

    Процессы CGroup не завершаются, даже когда основной процесс был убит командой Systemctl stop

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