Anzeige:
Ergebnis 1 bis 5 von 5

Thema: for Schleife

  1. #1
    Registrierter Benutzer
    Registriert seit
    Mar 2006
    Beiträge
    3

    for Schleife

    Hi,

    hab ein Problem mit der Ausgabe einer for Schleife, mal ein Beispiel
    Code:
    for a in {a..c}{a..b}{a..b}; do echo $a.test >> datei.txt; echo $a;done >> datei.txt
    Inhalt der Datei:
    aaa.test
    aaa
    aab.test
    aab
    so sollte der Inhalt der Datei sein

    Code:
    for a in {a..c}{a..b}{a..b}; do echo $a.test >> datei.txt; echo $a;done | grep [a-z][a-z][a-z] | tee -a datei.txt
    Inhalt der Datei:
    aaa.test
    aab.test
    aba.test
    abb.test
    baa.test
    bab.test
    bba.test
    bbb.test
    caa.test
    cab.test
    cba.test
    cbb.test
    aaa
    aab
    aba
    abb
    caa
    cab
    cba
    cbb
    und so ist er.

    Es scheint, wenn mehere Befehle in der for Schleife stehn, läuft die Ausgabe über einen Pufferspeicher, wenn dieser voll ist, wird er erst geschrieben.

    Die Ausgabe muss ich auch noch mal mit grep Filtern, da "echo $a" nicht der Befehl sein soll für den die Schleife gedacht ist und die Ausgabe sonst zu unübersichtlich ist.

    wenn man die Ausgabe der Schleife vergrössert kommt dann so etwas heraus

    Code:
    aaa.test
    ...
    ajw.test
    aaa
    ...
    ajv
    ajx.test
    ...
    ats.test
    ajw
    ..
    atr
    att.test
    ..
    bdo.test
    hat jemand ein Tip für mich?

  2. #2
    Geiler Bock Avatar von Painkiller
    Registriert seit
    Jan 2002
    Ort
    bei Bremen
    Beiträge
    2.247
    Code:
    for a in {a..c}{a..b}{a..b}; do echo $a.test >> datei.txt; echo $a >> datei.txt ;done
    So?

    Und so waere dann dein Weg richtig:
    Code:
    (for a in {a..c}{a..b}{a..c}; do echo $a.test >> datei.txt ; echo $a ;done) >> datei.txt

  3. #3
    Registrierter Benutzer Avatar von Veierabend
    Registriert seit
    Oct 2007
    Ort
    Meck Pomm
    Beiträge
    243
    Zitat Zitat von Painkiller Beitrag anzeigen
    Und so waere dann dein Weg richtig:
    Code:
    (for a in {a..c}{a..b}{a..c}; do echo $a.test >> datei.txt ; echo $a ;done) >> datei.txt
    Dann kannst du die erste Dateiumleitung auch weglassen
    Code:
    (for a in {a..c}{a..b}{a..c}; do echo $a.test; echo $a ;done) >> datei.txt
    working as designed

  4. #4
    Registrierter Benutzer
    Registriert seit
    Mar 2006
    Beiträge
    3
    Das erste Beispiel hat auch so funktioniert wie es sollte, das zweite mit dem grep aber nicht.

    Code:
    for a in {a..c}{a..b}{a..b}; do echo $a.test >> datei.txt; echo $a;done | grep [a-z][a-z][a-z] | tee -a datei.txt
    das Problem ist ja das nicht fortlaufend in die Datei geschrieben wird, sondern immer mehere am Stück.

    Code:
    aaa.test
    aab.test
    aba.test
    abb.test
    baa.test
    bab.test
    bba.test
    bbb.test
    caa.test
    cab.test
    cba.test
    cbb.test
    aaa
    aab
    aba
    abb
    caa
    cab
    Geändert von sligger (06.07.08 um 14:39 Uhr)

  5. #5
    Registrierter Benutzer
    Registriert seit
    Mar 2006
    Beiträge
    3
    Hab das zweite Beispiel mit der Klammer probiert und die Ausgabe sieht ganz gut aus

    THX

Stichworte

Lesezeichen

Berechtigungen

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