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.