Comment "lire" une variable dans une boucle while
Comment puis-je lire à partir de la 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
30
demandé sur
doubleDown
2012-10-29 17:19:21
4 réponses
Vous pouvez écrire:
while IFS= read -r line
do
echo "$line"
done <<< "$the_list"
Voir §3.6.7 "Ici Strings" dans le Bash Manuel De Référence.
(j'ai aussi pris la liberté d'ajouter quelques guillemets, et en ajoutant -r
et IFS=
read
, pour éviter de trop salir le contenu de vos variables.)
52
répondu
ruakh
2012-10-29 13:28:08
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 ... )
23
répondu
choroba
2012-10-29 13:32:53
Vous pouvez simplement utiliser
your_code | while read line;
do
echo $line
done
si vous ne faites pas attention à la boucle while exécutant dans un sous-puits (toutes les variables que vous modifiez ne seront pas visibles dans le parent après le done
).
16
répondu
Useless
2012-11-02 17:14:57
dos2unix filename.
e.g.:
dos2unix sshcopy.sh
Maintenant ça fonctionne pour moi.
-1
répondu
Sachin Patel
2013-06-25 23:38:13