LX-SCR-INFO-case
updated 7/27/10 00:58

case

Indien we meer dan 2 waarden op een variabele willen testen, is een if constructie soms minder goed leesbaar. In die omstandigheden wordt de case ingezet. Je ziet hem onder andere opduiken in opstartscripts van servicedaemons, die onderscheid moeten kunnen maken tussen start, stop, restart, en status.

  1. voorbeeld

#!/bin/bash
#
# casemenu: voert een opdracht uit afhankelijk van de
#           gemaakte keuze in het keuze menu
#
echo "Wat wilt u doen vandaag?"
echo "1) bash scripting"
echo "2) LAMP server"
echo "3) samba"
echo "4) iptables"
echo "5) I do not know !"

read case;

case $case in
    1)     
        echo "Bourne again shell"    
    ;;
    2)
        echo "Linux, Apache, Mysql en PHP"    
    ;;
    3)
        echo "Server Message Blocks"
    ;;
    4)
        echo "Blokkeer niet teveel"
    ;;
    5)
        echo "erg dat je dat niet weet"
        echo "misschien moet je je vandaag verdiepen in lvm2"
    ;;
    *)
        echo "Uw keuze is niet gevonden"
    ;;
esac

De hele case zit verpakt in case .... esac.
Een individuele keuze zit verpakt in <keuze>) .... ;;

  1. oefening

schrijf een script met de naam nu, en vijf opties die niet gecumuleerd worden:
-h : brengt de tijd op scherm
-d : brengt de datum op scherm in europese notatie
-w : brengt de weekdag op scherm (maandag ...)
-c : brengt een maandcalender op scherm van de huidige maand
-j : brengt een jaarcalender op scherm van het huidige jaar
geen of verkeerde optie: brengt gewoon date op scherm