Bash: Zeile für Zeile
Neulich musste ich für die Umstellung eines Mailsystems ca. 3.300 Aliase umschreiben. Da diese Aliase aus mehreren Quellen stammen sollte das ganze auch automatisch und jederzeit wiederholbar sein. Ich kam irgendwann an den Punkt, an dem ich eine Datei lesen und mit jeder Zeile etwas tun musste.
Der Klassiker in Bash ist einfach:
for LINE in $(cat /pfad/zur/datei) do echo $LINE done
Dazu gibt es jedoch eine meist bessere Alternative:
while read LINE do echo $LINE done < /pfad/zur/datei
Variante 2 nutzt das read Kommando unter Linux und liest die Datei wirkich zeilenweise, wogegen Version 1 wortweise liest.
Beispiel:
Quelldatei
zeile eins zeile zwei
Ergebnis der Variante 1:
zeile eins zeile zwei
Ergebnis der Variante 2:
zeile eins zeile zwei
Mir gefällt mir die erste Variante durchaus besser von der Form, aber sie verhält sich eventuell nicht, wie man es erwarten würde.