0

Как "прочитать" переменную в цикле while?

11

Проблема: Как прочитать из переменной с помощью 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 ответ(ов)

0

Если вы не используете переменную для других целей, вы можете даже обойтись без её явного указания:

while read; do
    echo "$REPLY"
done < <( ... код ... )

В этом примере переменная REPLY автоматически заполнится значением прочитанной строки. Это позволяет избежать создания лишней переменной и сохранить код более лаконичным.

0

Вы можете просто использовать

your_code | while read line;
do
    echo $line
done

если вас не смущает, что цикл while будет выполняться в подсистеме (любые переменные, которые вы измените, не будут видны в родительском процессе после done).

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь