So lese ich eine Datei Zeile für Zeile:
while read ROW
do
...
done < file
Ich verwende die andere Syntax nicht
cat file | while read ROW
do
...
done
weil die Pipe eine Subshell erzeugt und ich dadurch die Umgebungsvariablen verliere. Das Problem tritt auf, wenn die Datei nicht mit einem Zeilenumbruch endet: Die letzte Zeile wird nicht gelesen. In der letztgenannten Syntax lässt sich dies leicht lösen, indem nur ein Zeilenumbruch als Echo ausgegeben wird:
(cat file; echo) | while read ROW
do
...
done
Wie kann ich das Gleiche in der früheren Syntax tun, ohne eine Subshell zu öffnen oder eine temporäre Datei zu erstellen (die Liste ist ziemlich groß)?