<Précédent | Table des matières | Suivant>
Sortir d'une boucle
bash fournit deux commandes intégrées qui peuvent être utilisées pour contrôler le flux de programme à l'intérieur des boucles. La commande break termine immédiatement une boucle et le contrôle du programme reprend avec l'instruction suivante suivant la boucle. La commande continue fait sauter le reste de la boucle et le contrôle du programme reprend avec l'itération suivante de la boucle. Ici, nous voyons une version du programme while-menu incorporant à la fois break et continue :
#! / Bin / bash
# while-menu2 : un programme d'information système piloté par menu DELAY=3 # Nombre de secondes pour afficher les résultats
bien que vrai; faire
clair
chat <<- _EOF_
Veuillez sélectionner:
1. Afficher les informations système
2. Afficher l'espace disque
3. Afficher l'utilisation de l'espace domestique
0. Quitter
_EOF_
read -p "Entrer la sélection [0-3] > "
si [[ $REPLY =~ ^[0-3]$ ]] ; alors si [[ $REPLY == 1 ]]; alors
echo "Nom d'hôte : $HOSTNAME"
dormir $DÉLAI
continuer
fi
if [[ $REPLY == 2 ]]; puis df -h
dormir $DÉLAI
continuer
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
#! / Bin / bash
# while-menu2 : un programme d'information système piloté par menu DELAY=3 # Nombre de secondes pour afficher les résultats
bien que vrai; faire
clair
chat <<- _EOF_
Veuillez sélectionner:
1. Afficher les informations système
2. Afficher l'espace disque
3. Afficher l'utilisation de l'espace domestique
0. Quitter
_EOF_
read -p "Entrer la sélection [0-3] > "
si [[ $REPLY =~ ^[0-3]$ ]] ; alors si [[ $REPLY == 1 ]]; alors
echo "Nom d'hôte : $HOSTNAME"
dormir $DÉLAI
continuer
fi
if [[ $REPLY == 2 ]]; puis df -h
dormir $DÉLAI
continuer
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
dormir $DÉLAI
continuer
fi
if [[ $REPLY == 0 ]] ; puis casser
fi
d'autre
echo "Entrée invalide." dormir $DÉLAI
fi fait
echo "Programme terminé."
echo "Utilisation de l'espace domestique ($USER)" du -sh $HOME
fi
dormir $DÉLAI
continuer
fi
if [[ $REPLY == 0 ]] ; puis casser
fi
d'autre
echo "Entrée invalide." dormir $DÉLAI
fi fait
echo "Programme terminé."
Dans cette version du script, nous avons mis en place un boucle sans fin (celui qui ne se termine jamais tout seul) en utilisant le oui commande pour fournir un état de sortie à tout en. Depuis oui sortira toujours avec un état de sortie de zéro, la boucle ne se terminera jamais. Il s'agit d'une technique de script étonnamment courante. Puisque la boucle ne se terminera jamais d'elle-même, c'est au programmeur de fournir un moyen de sortir de la boucle lorsque le moment sera venu. Dans ce script, le pause La commande est utilisée pour sortir de la boucle lorsque la sélection « 0 » est choisie. Les Continuez La commande a été incluse à la fin des autres choix de script pour permettre une exécution plus efficace. En utilisant continuer, le script ignorera le code qui n'est pas nécessaire lorsqu'une sélection est identifiée. Par exemple, si la sélection « 1 » est choisie et identifiée, il n'y a aucune raison de tester les autres sélections.