La solution fournie par ghostdog74 est utile, mais a un défaut.
IFS ne peut pas utiliser de guillemets doubles (du moins sous Mac OS X), mais peut utiliser des guillemets simples comme :
IFS=$'\n'
C'est joli mais pas compatible avec le tableau de bord, peut-être que ceci est mieux :
IFS='
'
La ligne vide sera mangée dans le programme suivant :
IFS='
'
for line in $(cat file)
do
echo "$line"
done
Mais vous ne pouvez pas ajouter de guillemets autour de $(cat file)
il traitera le fichier entier comme une seule chaîne.
for line in "$(cat file)"
Si vous souhaitez qu'une ligne vide soit également traitée, utilisez la méthode suivante
while read line
do
echo "$line"
done < file