To bude tím, že read je příkaz pro čtení proměnných a používá se takto:
1) read x y z
2) Následně je v $x vše do prvního IFS (internal field separator), $y vše do dalšího IFS a v $z zbytek
IFS je oddělovač, který defaultně má nastavené bílé znaky (mezery, tabulátory) a konce řádku (které ignoruje, když řádek ukončíš pomocí \).
Zkusil jsem tohle:
#!/bin/sh
soubor="txt.txt";
echo "Pomoci cat:";
cat "$soubor" ;
echo "Pomoci while:";
#IFS="\n";
while read line; do
echo "$line";
done < $soubor
Když odkomentuješ #IFS="\n";, tak to jede, jak chceš ty. Otázkou je zda ti to neudělá bordel jinde (v něčem komplexnějším).