Как использовать пользовательский ввод как условие цикла 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 или если обнаружено условие конца файла.)

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

    Разница между распределенной и файловой системой кластера

    Как получить доступ к папке другого пользователя из другой учетной записи пользователя

    Как расширить корневой раздел

    Удалить несколько строк, не жадных

    Ни Chromium, ни Chrome не начнут Lubuntu

    Конфигурация ssh без запроса пароля

    Контейнер LXC не может получить доступ к локальной сети или Интернету

    Разархивировать определенные файлы из нескольких ZIP-файлов

    Отправить письмо, написанное в markdown с помощью mutt

    Возможно ли записывать звук непосредственно на оптический дисковод компьютера?

    Отправка почты на lan ip не выполнена

    В чем разница между установкой программного обеспечения как root или пользователем?

    Как заставить скрипт ifcfg «запускать» точные команды, которые мне нужны?

    Переименуйте файл со странным именем на Samba mount

    сортировать файл, но держать пары линий вместе

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