Publié le 28 décembre 2018
Admettons que j’ai un fichier qui contienne :
Linux, y’a moins bien mais c’est plus chère.
rm -fr en root, system dans la choucroute.
Faisons une boucle for basique dessus :
for i in `cat fichier.txt`
do
echo $i
done
Le résultat ne correspond pas à ce à quoi on pourrait s’attendre :
Linux,
y’a
moins
bien
mais
c’est
plus
chère.
rm
-fr
en
root,
system
dans
la
choucroute.
La raison est simple, la boucle for prends comme séparateur les
retours à la ligne, mais aussi les espaces, les tabulations et tous les
autres caractères du style. Heureusement, la variable d’environnement
$IFS
(comme Internal Field Separator
) permets
de fournir sa propre liste de séparateurs. Il suffit de faire :
IFS=$'\n'
for i in `cat fichier.txt`
do
echo $i
done
Le résultat correspond à ce qui est attendu :
Linux, y’a moins bien mais c’est plus chère.
rm -fr en root, system dans la choucroute.