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
    
    


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