# 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