Как "прочитать" переменную в цикле while?
Проблема: Как прочитать из переменной с помощью while read line
?
Я столкнулся с проблемой, когда пытался использовать конструкцию while read line
для чтения из переменной, содержащей список. В примере я создал переменную the_list
, но при попытке перенаправить ее содержимое в цикл while
получаю ошибку.
Пример кода:
the_list=$(..код..)
while read line
do
echo $line
done < $the_list
При выполнении этого кода возникает следующая ошибка:
./copy.sh: line 25: $the_list: ambiguous redirect
Как правильно организовать чтение из переменной с использованием while read line
? Спасибо!
2 ответ(ов)
Если вы не используете переменную для других целей, вы можете даже обойтись без её явного указания:
while read; do
echo "$REPLY"
done < <( ... код ... )
В этом примере переменная REPLY
автоматически заполнится значением прочитанной строки. Это позволяет избежать создания лишней переменной и сохранить код более лаконичным.
Вы можете просто использовать
your_code | while read line;
do
echo $line
done
если вас не смущает, что цикл while будет выполняться в подсистеме (любые переменные, которые вы измените, не будут видны в родительском процессе после done
).
Как проверить, установленна ли переменная в Bash
Установить переменные окружения из файла с парами ключ/значение
Синтаксис однострочного цикла while в Bash
Расширение переменных внутри одинарных кавычек в команде Bash
Длина строки в Bash