Skip to content

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.

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Um einen Kommentar hinterlassen zu können, erhalten Sie nach dem Kommentieren eine E-Mail mit Aktivierungslink an ihre angegebene Adresse.
BBCode-Formatierung erlaubt
Sie können [geshi lang=LANG][/lang] Tags verwenden um Quellcode abhängig von der gewählten Programmiersprache einzubinden
Formular-Optionen
tweetbackcheck cronjob