Итерация по многострочной строке, хранящейся в переменной

Я читал, что плохо писать такие вещи, как for line in $(command) , кажется, что правильный путь:

 command | while IFS= read -r line; do echo $line; done 

Это отлично работает. Но что, если я хочу итерации, это содержимое переменной , а не прямой результат команды?

Например, представьте, что вы создаете следующий файл quickfox :

 The quick brown foxjumps\ over - the lazy , dog. 

Я хотел бы иметь возможность сделать что-то вроде этого:

 # This is just for the example, # I could of course stream the contents to `read` variable=$(cat quickfox); while IFS= read -r line < $variable; do echo $line; done; # this is incorrect 

One Solution collect form web for “Итерация по многострочной строке, хранящейся в переменной”

В современных оболочках, таких как bash и zsh, у вас есть очень полезный редиректор `<<< ', который принимает строку как вход. Так вы бы сделали

 while IFS= read -r line ; do echo $line; done <<< "$variable" 

В противном случае вы всегда можете сделать

 echo "$variable" | while IFS= read -r line ; do echo $line; done 
  • Запуск нулевого байта читается на FIFO / pty
  • Чтение полей ввода, разделенных пробелами
  • Строка чтения игнорируется
  • Bash: при чтении строки "или каждые 60 секунд"
  • Безопасно читать пароль из замещения процесса?
  • Читаемый Bash встроенный с многострочным
  • Ясный способ реагировать на ввод пользователя?
  • Функция BASH для чтения пользовательского ввода ИЛИ прерывания по таймауту
  • Как получить полное чтение и полную запись IOPS в Linux?
  • оценка команд двойной блокировки в выражении состояния bash
  • «При чтении -r LINE; do "заменяет несколько пробелов одним пробелом
  • Interesting Posts

    Экран GNU не отображает символы юникода правильно

    Почему новый пользователь наследовал файлы от удаленного пользователя?

    Паника в ядре в Fedora 18 после обновления до ядра-3.9

    Генерирование оповещения по электронной почте для событий в системном журнале

    Ошибка обновления Ubuntu 17.04 «Ожидание автоматического выхода на охрану»

    Возможная роль: Почему мне нужно установить user.email в etckeeper?

    Получить определенную информацию из файла журнала

    Как привязать Супер-ключ к whiskermenu, не нарушая Super + Другие комбинации?

    Остановка rsync без сохранения временных файлов

    Работы Cron и уведомление по почте

    Создание n переменных в Bash без назначения их по одной?

    Могу ли я монтировать нечувствительные к регистру tmpfs / ramfs?

    псевдонимы параметров

    Удалить строки, содержащие путь к файлу с помощью sed

    Сделать содержимое терминала соответствующим размеру окна

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