<Précédent | Table des matières | Suivant>
maisons
In bash, la commande composée à choix multiples est appelée maisons. Il a la syntaxe suivante :
maisons mot in
[modèle [| modèle(...)...) commandes ;;]...
Esac
Si nous regardons le lire-menu programme du chapitre 28, nous voyons la logique utilisée pour agir sur la sélection d'un utilisateur :
#! / Bin / bash
# read-menu : un programme d'information système piloté par menu clair
écho "
Veuillez sélectionner:
1. Afficher les informations système
2. Afficher l'espace disque
3. Afficher l'utilisation de l'espace domestique
0. Quitter "
read -p "Entrer la sélection [0-3] > "
si [[ $REPLY =~ ^[0-3]$ ]] ; alors si [[ $REPLY == 0 ]]; alors
#! / Bin / bash
# read-menu : un programme d'information système piloté par menu clair
écho "
Veuillez sélectionner:
1. Afficher les informations système
2. Afficher l'espace disque
3. Afficher l'utilisation de l'espace domestique
0. Quitter "
read -p "Entrer la sélection [0-3] > "
si [[ $REPLY =~ ^[0-3]$ ]] ; alors si [[ $REPLY == 0 ]]; alors
echo "Programme terminé." sortir
fi
if [[ $REPLY == 1 ]] ; then echo "Hostname: $HOSTNAME" uptime
sortie
fi
if [[ $REPLY == 2 ]]; puis df -h
sortie
fi
if [[ $REPLY == 3 ]]; alors
if [[ $(id -u) -eq 0 ]] ; alors
echo "Utilisation de l'espace d'accueil (tous les utilisateurs)" du -sh /home/*
d'autre
echo "Utilisation de l'espace domestique ($USER)" du -sh $HOME
fi sortie
fi d'autre
echo "Entrée invalide." >&2 sortie 1
fi
echo "Programme terminé." sortir
fi
if [[ $REPLY == 1 ]] ; then echo "Hostname: $HOSTNAME" uptime
sortie
fi
if [[ $REPLY == 2 ]]; puis df -h
sortie
fi
if [[ $REPLY == 3 ]]; alors
if [[ $(id -u) -eq 0 ]] ; alors
echo "Utilisation de l'espace d'accueil (tous les utilisateurs)" du -sh /home/*
d'autre
echo "Utilisation de l'espace domestique ($USER)" du -sh $HOME
fi sortie
fi d'autre
echo "Entrée invalide." >&2 sortie 1
fi
En utilisant maisons, nous pouvons remplacer cette logique par quelque chose de plus simple :
#! / Bin / bash
# case-menu : un programme d'information système piloté par menu clair
écho "
Veuillez sélectionner:
1. Afficher les informations système
2. Afficher l'espace disque
3. Afficher l'utilisation de l'espace domestique
0. Quitter "
read -p "Entrer la sélection [0-3] > "
cas $REPLY dans
0) echo "Programme terminé." sortir
;;
#! / Bin / bash
# case-menu : un programme d'information système piloté par menu clair
écho "
Veuillez sélectionner:
1. Afficher les informations système
2. Afficher l'espace disque
3. Afficher l'utilisation de l'espace domestique
0. Quitter "
read -p "Entrer la sélection [0-3] > "
cas $REPLY dans
0) echo "Programme terminé." sortir
;;
1) echo "Nom d'hôte : $HOSTNAME"
;;
2) df-h
;;
3) si [[ $(id -u) -eq 0 ]] ; alors
echo "Utilisation de l'espace d'accueil (tous les utilisateurs)" du -sh /home/*
d'autre
echo "Utilisation de l'espace domestique ($USER)" du -sh $HOME
fi
;;
*) echo "Entrée invalide" >&2 sortie 1
;;
Esac
1) echo "Nom d'hôte : $HOSTNAME"
;;
2) df-h
;;
3) si [[ $(id -u) -eq 0 ]] ; alors
echo "Utilisation de l'espace d'accueil (tous les utilisateurs)" du -sh /home/*
d'autre
echo "Utilisation de l'espace domestique ($USER)" du -sh $HOME
fi
;;
*) echo "Entrée invalide" >&2 sortie 1
;;
Esac
La maisons commande regarde la valeur de mot, dans notre exemple, la valeur du RÉPONDRE variable, puis tente de la faire correspondre à l'une des motifs. Lorsqu'une correspondance est trouvée, le commandes associés au modèle spécifié sont exécutés. Une fois qu'une correspondance est trouvée, aucune autre correspondance n'est tentée.