PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : #!/bin/bash Datei einlesen



Prim
11-09-2007, 13:08
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

BLUESCREEN3D
11-09-2007, 15:22
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:

while read line || [ "$line" != "" ]
do
echo $line
done < "$file"
"$file" statt $file - falls der Dateiname Leerzeichen enthält.

Kennt jemand eine einfachere Lösung?

Prim
11-09-2007, 15:45
Danke! Funktioniert einwandfrei! :)

jan61
11-09-2007, 20:41
...

while read line || [ "$line" != "" ]
do
echo $line
done < "$file""$file" statt $file - falls der Dateiname Leerzeichen enthält.

Kennt jemand eine einfachere Lösung?

Bitte auch immer echo "$line", sonst werden mehrere aufeinanderfolgende Leerzeichen zu einem.

Ich weiß nicht, ob das einfacher ist:

export IFS='
'
for i in `cat "$file"`; do echo "$i"; doneAlso erst den Input Field Separator auf ausschließlich Zeilenumbruch stellen, dann per for-Schleife einlesen.

Jan

P.S.: Wenn in der Schleife nicht noch was Spannendes passiert, dann wäre natürlich
cat "$file" die einfachste Variante :rolleyes: