Monday, February 06, 2006

Bashing Teil 2 - Dateien zeilenweise einlesen

Viele stoßen schnell darauf über mehrere Segmente iterieren zu wollen z.B.:


for i in `ls -1 --color="none"`
do
echo -n $i
test -d "$i" && echo -n " ist ein verzeichnis..."
echo
done


Das funktioniert auch soweit kein Leerzeichen oder ein anderes Whitespace in dem Dateinamen der
Ausgabe von "ls" vorhanden ist (Die Ausgabe von ls, ist wie eine Datei - es könnte hier auch z.B.
"ls -1 --color="none>/tmp/ls_ausgabe.txt;cat /tmp/ls_ausgabe.txt" stehen.

#wenn man es also "sicherer" haben will, sollte man den IFS zuvor richtig setzen:

IFS_SIK=$IFS #originalen IFS sichern
IFS=$'\n'


#folgender Befehl zeigt den Inhalt von IFS an:

set|grep IFS


#Danach sollte/muss man den alten IFS wieder setzen, damit nachfolgende Anweisungen korrekt #funktionieren:

IFS=$OLD_IFS