Anzeige:
Ergebnis 1 bis 4 von 4

Thema: #!/bin/bash Datei einlesen

  1. #1
    Prim
    Gast

    Unhappy #!/bin/bash Datei einlesen

    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 13:13 Uhr)

  2. #2
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    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:
    Code:
    while read line || [ "$line" != "" ]
    do
    echo $line
    done < "$file"
    "$file" statt $file - falls der Dateiname Leerzeichen enthält.

    Kennt jemand eine einfachere Lösung?

  3. #3
    Prim
    Gast
    Danke! Funktioniert einwandfrei!

  4. #4
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von BLUESCREEN3D Beitrag anzeigen
    ...
    Code:
    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:
    Code:
    export IFS='
    '
    for i in `cat "$file"`; do echo "$i"; done
    Also 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
    Code:
    cat "$file"
    die einfachste Variante

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •