Pour palier à ce soucis, on peut jouer en modifiant la variable IFS et en la restaurant ensuite.
Cela donne :
old_IFS=$IFS
IFS=$'\n'
for line in $(cat fichier)
do
echo "La ligne est : $line"
done
IFS=$old_IFS
Une méthode plus subtile mais tout aussi jolie est d'utiliser read et while... Cela donne maintenant : cat fichier | while read line || [[ $line ]]
do
echo "La ligne est : $line"
done
C'est quand même moins tordu ;)
A noter, le [[ $line ]] permet de prendre en compte la dernière ligne s'il n'y a pas de retour chariot.