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$$
    
    


  • Ki generiertes Bild

    Offen für Argumente geht in die zweite Runde

    Online-Debattenformat der Juniorprofessur Soziologie der TU Chemnitz thematisiert am 10. September 2025 die Rolle der Solarenergie im Zuge der Energiewende …

  • Gruppe vieler Menschen

    Let's run #TUCgether!

    Zum Jubiläum des Chemnitzer Firmenlaufs gingen 266 Laufbegeisterte für die TU Chemnitz an den Start …

  • Menschen stehen vor einer Leinwand

    Erfolgreiche Summer School an der TU Chemnitz

    Professur Medienpsychologie und die Hochschulallianz Across begrüßten zur Summer School „How much science is in science fiction?“ medienbegeisterte Nachwuchswissenschaftlerinnen und -wissenschaftler aus neun verschiedenen Ländern …

  • Menschen stehen vor einem Haus

    Als Azubi an die Uni? Ja, klar!

    Kanzler der TU Chemnitz begrüßte neue Auszubildende und gratulierte Absolventinnen und Absolventen zum erfolgreichen Berufsabschluss – TU Chemnitz bildet aktuell in zehn Berufen aus …