Предположим, файл file
состоит из нескольких строк.
$ cat file
foo
bar
baz
Предположим далее, что я хочу перебирать каждую строку с помощью цикла while.
$ while IFS= read -r line; do
$ echo $line
$ # do stuff
$ done < file
foo
bar
baz
Наконец, предположим, что я хочу передать строки, хранящиеся в переменной, а не строки, хранящиеся в файле. Как я могу прокручивать строки, которые сохраняются как переменная, не получая приведенную ниже ошибку?
$ MY_VAR=$(cat file)
$ while IFS= read -r line; do
$ echo $line
$ # do stuff
$ done < $(echo "$MY_VAR")
bash: $(echo "$MY_VAR"): ambiguous redirect
echo $line
не то же самое, чтоecho "$line"
. См. BashPitfalls #14. - person Charles Duffy   schedule 26.06.2017