Hallo Leute,
ich will gern den Inhalt einer Datei einlesen und ausgeben, dass mach ich mit:
while read line
do
echo $line
done < $file
hab nun folgendes Problem: die letzte Zeile wird nicht ausgegeben!
Was mach ich FALSCH?!?!
MfG
Christoph
Hallo Leute,
ich will gern den Inhalt einer Datei einlesen und ausgeben, dass mach ich mit:
while read line
do
echo $line
done < $file
hab nun folgendes Problem: die letzte Zeile wird nicht ausgegeben!
Was mach ich FALSCH?!?!
MfG
Christoph
Geändert von Prim (11-09-2007 um 12:13 Uhr)
Die letzte Zeile endet nicht mit einem Zeilenwechsel. Eigentlich nichts besonderes, aber read gibt bei der letzten Zeile immer 0 zurück. Das kann man so umgehen:
"$file" statt $file - falls der Dateiname Leerzeichen enthält.Code:while read line || [ "$line" != "" ] do echo $line done < "$file"
Kennt jemand eine einfachere Lösung?
Danke! Funktioniert einwandfrei!
Bitte auch immer echo "$line", sonst werden mehrere aufeinanderfolgende Leerzeichen zu einem.
Ich weiß nicht, ob das einfacher ist:
Also erst den Input Field Separator auf ausschließlich Zeilenumbruch stellen, dann per for-Schleife einlesen.Code:export IFS=' ' for i in `cat "$file"`; do echo "$i"; done
Jan
P.S.: Wenn in der Schleife nicht noch was Spannendes passiert, dann wäre natürlichdie einfachste VarianteCode:cat "$file"
Lesezeichen