How do I "read" a variable on a while loop

Crazy_Bash picture Crazy_Bash · Oct 29, 2012 · Viewed 94.3k times · Source

How can I read from variable with while read line?

For example:

the_list=$(..code..)

while read line
do
        echo $line

done < $the_list

using the code above gives me error:

./copy.sh: line 25: $the_list: ambiguous redirect

Answer

ruakh picture ruakh · Oct 29, 2012

You can write:

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

See §3.6.7 "Here Strings" in the Bash Reference Manual.

(I've also taken the liberty of adding some double-quotes, and adding -r and IFS= to read, to avoid too much mucking around with the contents of your variables.)