next up previous contents index
Next: Utilisation de for Up: Passons aux choses sérieuses Previous: Utilisation de if

   
Utilisation de case

# Fichier case.sh.
# Exemple d'utilisation de case.


# S'il n'y a pas de parametres fournis par l'utilisateur...

if [ $# = 0 ]
then
    echo Aucun argument recu !
    echo "$0 risque de ne pas bien marcher..."
    echo
    echo "Le premier argument doit etre le nom d'un utilisateur"
    echo "(root par defaut)..."
    echo
fi


#------#
# case #
#------#


# case sur une variable d'environnement.

case $LOGNAME in
  root) PS1="# ";;
  mathieu | piou) PS1="Salut $LOGNAME$ ";;
  *) PS1="\h:\w$";;
esac

# Le contenu de la variable d'environnement a ete change. Il faut
# l'exporter et la proteger en lecture.

export PS1
readonly PS1
echo $PS1


# case sur le nombre d'arguments fournis par l'utilisateur.

case $# in
  0) echo "aucun parametre"
     echo "Syntaxe :  $0 <nom d'utilisateur>";;
  1) echo "1 parametre passe au programme : $1";;
  2) echo "2 parametres passes au programme : $1 et $2";;
  *) echo "TROP DE PARAMETRES !"
esac


# case sur un lecture clavier.

echo "Voulez vous continuer le programme ?"
read reponse
case $reponse in
  [yYoO]*) echo "Ok, on continue";;
  [nN]*) echo "$0 arrete suite a la mauvaise volonte de l'utilisateur ;-)"
         exit 0;;
  *) echo "ERREUR de saisie"
     exit 1;;
esac


# case sur le premier argument fournit par l'utilisateur.

case $1 in
  *[!0-9]*) echo "$1 n'est pas un nombre";;
esac


# Sur quel utilisateur va porter le prochain case ?

if [ $# -lt 1 ]
then
    utilisateur="root"
    echo "utilisateur : $utilisateur"
else
    utilisateur=$1
    echo "utilisateur : $utilisateur"
fi

# Une commande qui cherche si l'utilisateur est logue ou pas.

who | grep "^$utilisateur" > /dev/null 2>&1

# La valeur de retour de la commande precedente ("$?") vaut :
#       0 si l'utilisateur est logue.
#       1 si l'utilisateur n'est pas logue.
#       2 si la syntaxe de la commande precedente est erronee.

case $? in
  0) echo Message envoye a $utilisateur
     mail $utilisateur << Fin
     Et voici $LOGNAME egalement !!
Fin
;;
  1) echo $utilisateur non connecte;;
  2) echo "ERREUR appel errone de la commande grep";;
esac



MATHIEU DECORE
1999-11-03
Merci de me dire ce que pensez de ce document.