Comment puis-je lire à partir d'une variable avec while read line
?
Par exemple:
the_list=$(..code..)
while read line
do
echo $line
done < $the_list
l'utilisation du code ci-dessus me donne une erreur:
./copy.sh: line 25: $the_list: ambiguous redirect
Tu peux écrire:
while IFS= read -r line
do
echo "$line"
done <<< "$the_list"
Voir §3.6.7 "Here Strings" dans le Bash Reference Manual .
(J'ai également pris la liberté d'ajouter des guillemets doubles et d'ajouter -r
et IFS=
à read
, pour éviter de trop fouiner avec le contenu de vos variables.)
Si vous n'utilisez pas la variable pour autre chose, vous pouvez même vous en passer:
while read line ; do
echo $line
done < <( ... code ... )
Vous pouvez simplement utiliser
your_code | while read line;
do
echo $line
done
si cela ne vous dérange pas que la boucle while s'exécute dans un sous-shell (toutes les variables que vous modifiez ne seront pas visibles dans le parent après le done
).