Springe zum Hauptinhalt

Bourne
next up previous contents
Next: while-Kommando Up: Ablaufsteuerung Previous: test-Kommando

for-Kommando

  • Beispiel:
    #!/bin/sh
    #
    # lsdir (Version 1): 
    # Aufruf: lsdir1 <verz_1> [<verz_2> ... ]
    #
    for i
    do   ls -l $i | grep '^[Dd]'
    done
    
    


    Für jedes Aufrufargument wird die Pipeline ausgeführt.

  • Problem: bei Aufruf ohne Argument erfolgt keine Anwendung auf aktuelles Verzeichnis, da for-Körper überhaupt nicht abgearbeitet wird
  • Lösung:
    #!/bin/sh
    #
    # lsdir-Version: 
    # Aufruf: lsdir2 <verz_1> [<verz_2> ... ]
    #
    if [ $# -eq 0 ]
    then
    lsdir2 .
    else
        for i
        do   ls -l $i | grep '^[Dd]'
        done
    fi
    
    
  • allgemeine Form des for-Kommando:


    for var [in zk1 zk2 ...zkn ]

    do

        cmd_liste

    done


    Der Shell-Variablen var wird in jedem Zyklus eine Zeichenkette zki zugewiesen und damit cmd_liste abgearbeitet. (Dort wird natürlich auf var Bezug genommen.)

  • Beispiele:
    #!/bin/sh
    #
    # Erzeugen von Files
    #
    # Aufruf:  create <file_1> [<file_2> ...]
    #
    
    if [ $# -eq 0 ]
    then echo "Aufruf: $0 file_1 [file_2 ...]"
    else
         for i
         do
             >$i
         done
    fi
    
    

    #!/bin/sh
    #
    # lsdir-Version fuer das aktuelle Verzeichnis
    #
    # Aufruf: lsdir3
    #
    
    for i in *
    do
         if [ -d $i ]
         then echo $i
         fi
    done
    
    
  • Bemerkung:
    • Metazeichen (z.B. *) erlaubt, d.h. es wird Filenamengenerierung durchgeführt
    • nur Verzeichnisnamen aufgelistet
  • Beispiel:
    #!/bin/sh
    # Ausgabe von Informationen zu einem Nutzerkennzeichen
    # in der Form:
    # NUTZER-KZ: <nkz>   HOME-DIR: ...  LOGIN-SHELL: ...
    #
    # Aufruf: $0 <nkz_1> ...
    
    if [ $# -eq 0 ]
    then
        echo "Aufruf: $0 nutzerkennzeichen ..."
        exit 1;
    fi
    for i in $*
    do
        if grep "^$i:" /etc/passwd >/tmp/nkz$$
        then
            h=`cat /tmp/nkz$$ | cut -f6 -d':'`
            p=`cat /tmp/nkz$$ | cut -f7 -d':'`
            echo "NUTZER-KZ:$i  HOME-DIR:$h  LOGIN-SHELL:$p"
        else echo "NUTZER-KZ $i auf dieser Maschine nicht vorhanden"
        fi
    done
    rm /tmp/nkz$$
    
    


  • Porträt eines Mannes

    Studieren trotz Vollzeitjob

    Max Chris Schreiber hat nach seinem VWA-Abschluss erfolgreich ein berufsbegleitendes Bachelorstudium „Public Sector Management“ an der TU Chemnitz gemeistert und damit seinen Blick auf den öffentlichen Sektor erweitert …

  • Eine blonde Frau hält zwei beschriftete Aufkleber hoch.

    TU Chemnitz feiert erneut Vielfalt beim Christopher Street Day

    Let’s celebrate #TUCgether: TU Chemnitz nimmt am 4. Juli 2026 mit einem Wagen am Christopher Street Day in Chemnitz teil und zeigt die Vielfalt der TUC-Familie – Alle sind herzlich eingeladen, sich zu beteiligen …

  • Eine Schülerin im weißen Kittel experimentiert mit einem Reagenzglas im Labor.

    Junge Chemietalente auf der Suche nach der Substanz X

    55. Ausgabe des Chemie-Wettbewerbs „Julius Adolph Stöckhardt“ fand an der TU Chemnitz statt – Toni Radecker vom Clemens-Winkler-Gymnasium Aue belegte Platz 1 und verteidigte damit seinen Titel aus dem Vorjahr …

  • Ein Mann steht vor einem Gebäude.

    „Die Sprachbarriere verschwindet schneller, als man denkt“

    Piotr Marsza?ek aus Katowice hat über die „Betreuungsinitiative Deutsche Auslands- und Partnerschulen“ des Deutschen Akademischen Austauschdienstes den Weg an die TU Chemnitz gefunden …