Anzeige:
Ergebnis 1 bis 2 von 2

Thema: tcsh foreach zeilenweise

  1. #1
    Registrierter Benutzer
    Registriert seit
    19.10.2005
    Beiträge
    40

    tcsh foreach zeilenweise

    Hallo Leute,

    ich habe ein tcsh-script mit folgender foreach-Schleife:

    Code:
    foreach zeile (`cat file.txt`) 
      .....
    end
    Es funktioniert nicht so, wie ich will.
    Die Variable zeile wird mit allen Worten der Datei file.txt belegt.
    Ich möchte jedoch, dass zeile mit jeder Zeile der Datei file.txt
    belegt wird, d.h. der Block innerhalb der Schleife soll für jede Zeile
    aus file.txt ausgeführt werden. Wie erreiche ich das am einfachsten
    in tcsh?

    Daniel
    Geändert von DanielDD (26-07-2012 um 15:21 Uhr)

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Unter tcsh ist es nicht so einfach den IFS (BASH) zu ändern!
    Es gibt verschiedene eigen Kreationen im Netz die dir Helfen können oder selbst bauen.
    Code:
    #!/usr/bin/tcsh -f
    
    foreach zeile (`cat test.txt | sed 's, ,\\t,g'`)
     echo $zeile
    end
    Für die Kompatibilität siehe: http://interglacial.com/~sburke/pub/...ivalencies.txt

    Mit bash kann man so etwas wesentlich besser machen.
    Beispiel:
    Code:
    #!/usr/bin/env bash
    #################################
    ## Generiert eine neue /etc/ftpusers
    ## echo "$IFS" | od -c
    ## echo "$IFS" | od -b
    #################################
    
    cat > /tmp/ftpusers <<EOF
    #
    # ftpusers      This file describes the names of the users that may
    #               _*NOT*_ log into the system via the FTP server.
    #               This usually includes "root", "uucp", "news" and the
    #               like, because those users have too much power to be
    #               allowed to do "just" FTP...
    #
    EOF
    
    IFS=":"
    while { read user d d gid d; }; do
      if [ $gid -le 999 -a "$user" != "ftp" ]; then
        echo "$user"
      fi
    done </etc/passwd >>/tmp/ftpusers
    
    cat >> /tmp/ftpusers  <<EOF
    ##EOF
    
    EOF
    Geändert von undefined (30-07-2012 um 06:56 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

Lesezeichen

Berechtigungen

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