Springe zum Hauptinhalt

Bourne
next up previous contents
Next: break-Kommando Up: Ablaufsteuerung Previous: until-Kommando

case-Kommando

  • Beispiel:
    #!/bin/sh
    # 
    # Shell-Script append, das ein File
    # an ein anderes File "anhaengt"
    #
    # Aufruf: append [von_file] nach_file
    #
    case $# in
        1) cat >>$1;;
        2) cat >>$2 <$1;;
        *) echo "Aufruf: append [von] nach";;
    esac
    
    
  • allgemeine Form:


    case zk in

        zk_muster_1) cmd_liste_1;;

        zk_muster_2) cmd_liste_2;;

        ...

        zk_muster_n) cmd_liste_n;;

    esac

  • Bemerkung:


    Zur Bildung der Zeichenkettenmuster zk_muster_i können die ,,pattern matching``-Möglichkeiten der Shell (*, ?, [-]) benutzt werden sowie mehrere Alternativen, getrennt durch $\vert$ angegeben werden:


        zk_muster_1 $\vert$ zk_muster_2 $\vert$ ...)

  • Beispiel:
    #!/bin/sh
    #
    # komfortablere Schnittstelle fuer /usr/bin/cal
    #
    # Aufruf:    cal  [ <monatsname>|<monatszahl> [ <jahr> ]]
    #
    case $# in
    0)      set `date`; m=$2; y=$7 ;;   # keine Argumente: heute
    1)      m=$1; set `date`; y=$7 ;;   # 1 Arg:  Monat im aktuellen Jahr
    2)      m=$1; y=$2 ;;               # 2 Arg: Monat und Jahr
    *)      echo "Aufruf: a) $0 [ <monatsname>|<monatszahl> [ <jahr> ]]"
            echo "        b) $0  <jahr> "
            echo ""
            echo "Bsp: $0 5 1990   --> Mai 1990"
            echo "     $0 5        --> Mai des aktuellen Jahres"
            echo "     $0 05       --> Jahr 5 ,d.h fuer die Jahre 1-12 muss die"
            echo "                     Ziffer 0 vor die Jahreszahl gesetzt werden"
            exit 1;;
    esac
    case $m in
        ja*|Jan*)        m=1 ;;
        fe*|Feb*)        m=2 ;;
        ma[er]*|Ma[er]*) m=3 ;;
        ap*|Apr*)        m=4 ;;
        ma[yi]|Ma[yi])   m=5 ;;
        jun*|Jun*)       m=6 ;;
        jul*|Jul*)       m=7 ;;
        au*|Aug*)        m=8 ;;
        se*|Sep*)        m=9 ;;
        o[ck]*|O[ck]*)   m=10 ;;
        no*|Nov*)        m=11 ;;
        de*|De*)         m=12 ;;
        [1-9]|10|11|12)       ;;         # Monatsnummer
        *)               y=$m;m="";;     # erstes Argument als Jahreszahl
    esac
    if /usr/bin/cal $m $y
    then :
    else
        echo "Aufruf: a) $0 [ <monatsname>|<monatszahl> [ <jahr> ]]"
        echo "        b) $0  <jahr> "
        echo ""
        echo "Bsp: $0 5 1990   --> Mai 1990"
        echo "     $0 5        --> Mai des aktuellen Jahres"
        echo "     $0 05       --> Jahr 5 ,d.h fuer die Jahre 1-12 muss die"
        echo "                     Ziffer 0 vor die Jahreszahl gesetzt werden"
        exit 1
    fi
    
    


  • 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 …