Exemples pratiques du fichier source 12-scripts_interactifs_et_options.md.
- Section : Menus et interfaces utilisateur > Menu basique avec select
- Description : La commande
selectcrée automatiquement un menu numéroté avec boucle de saisie etcasepour le traitement des choix - Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : Affiche un menu numéroté (1. Lister les fichiers, 2. Afficher la date, 3. Quitter). Attend la saisie utilisateur
- Commande :
bash exemples/chapitre12/01_menu_select.sh - Test automatique :
echo "3" | bash exemples/chapitre12/01_menu_select.sh
- Section : Menus et interfaces utilisateur > Menu personnalisé avec read
- Description : Menu interactif avec fonction
show_menu, bouclewhile true,readpour la saisie, informations système (uname,uptime, IP) - Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : Affiche un menu avec 4 options. Choix 2 affiche les infos système, choix 3 affiche l'IP, choix 4 quitte. Utilise
clearentre les itérations - Commande :
bash exemples/chapitre12/02_menu_read.sh(interactif) - Test automatique :
echo "4" | bash exemples/chapitre12/02_menu_read.sh
- Section : Menus et interfaces utilisateur > Menu avec sous-menus
- Description : Architecture menu principal avec sous-menus fichiers (lister/créer/supprimer) et système (disque/mémoire/processus), navigation par fonctions
- Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : Menu principal → sous-menus avec retour. Utilise
clearentre les écrans. Choix 3 au menu principal pour quitter - Commande :
bash exemples/chapitre12/03_menu_sous_menus.sh(interactif) - Test automatique :
echo "3" | bash exemples/chapitre12/03_menu_sous_menus.sh
- Section : Validation des entrées utilisateur > Validation basique
- Description : Fonction
validate_number()vérifiant si l'entrée est un nombre positif avec regex^[0-9]+$, boucle de saisie jusqu'à validation - Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : Demande un nombre, rejette les entrées non numériques, accepte et affiche le nombre valide
- Commande :
bash exemples/chapitre12/04_validation_nombre.sh(interactif) - Test automatique :
echo "42" | bash exemples/chapitre12/04_validation_nombre.sh
- Section : Validation des entrées utilisateur > Validation d'email
- Description : Fonction
validate_email()avec regex pour valider le format email, boucle de saisie avec message d'erreur - Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : Demande un email, rejette les formats invalides, accepte et affiche l'email valide
- Commande :
bash exemples/chapitre12/05_validation_email.sh(interactif) - Test automatique :
echo "test@example.com" | bash exemples/chapitre12/05_validation_email.sh
- Section : Validation des entrées utilisateur > Validation avec choix limités
- Description : Fonction
validate_yes_no()avec conversion en minuscules (${input,,}), codes retour 0 (oui), 1 (non), 2 (invalide) - Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : Demande oui/non, accepte les variantes (oui/o/yes/y/non/n/no), rejette les entrées invalides
- Commande :
bash exemples/chapitre12/06_validation_oui_non.sh(interactif) - Test automatique :
echo "oui" | bash exemples/chapitre12/06_validation_oui_non.sh
- Section : Validation des entrées utilisateur > Validation d'une plage de valeurs
- Description : Fonction
validate_range()vérifiant qu'un nombre est dans un intervalle min-max, menu de niveau de difficulté (1-3) - Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : Affiche les 3 niveaux, demande un choix, valide qu'il est entre 1 et 3, affiche le niveau sélectionné
- Commande :
bash exemples/chapitre12/07_validation_plage.sh(interactif) - Test automatique :
echo "2" | bash exemples/chapitre12/07_validation_plage.sh
- Section : Validation des entrées utilisateur > Validation avec timeout
- Description : Fonction
read_with_timeout()utilisantread -tpour limiter le temps de saisie (10s) avec valeur par défaut ("admin") en cas de timeout - Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : Demande un nom avec timeout de 10s. Si pas de réponse, utilise "admin" par défaut
- Commande :
bash exemples/chapitre12/08_validation_timeout.sh(interactif, 10s timeout) - Test automatique :
echo "Alice" | bash exemples/chapitre12/08_validation_timeout.sh
- Section : Gestion des signaux > Piégeage des signaux avec trap
- Description : Piégeage de SIGINT (Ctrl+C) avec fonction de gestion, boucle de travail avec compteur. Adapté avec 3 itérations pour le test automatique
- Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : Affiche 3 itérations de travail puis termine normalement. En cas de Ctrl+C, affiche le message d'interruption
- Commande :
bash exemples/chapitre12/09_signaux_trap.sh
- Section : Gestion des signaux > Gestion avancée des signaux
- Description : Gestion multi-signaux : INT/TERM (arrêt propre), HUP (rechargement config), EXIT (nettoyage). Fichiers temporaires gérés dans un tableau. Adapté avec 3 itérations
- Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : Crée 3 fichiers temporaires, effectue 3 itérations de travail, puis nettoie automatiquement les fichiers temporaires via le trap EXIT
- Commande :
bash exemples/chapitre12/10_signaux_avances.sh
- Section : Scripts avec options (getopts) > Exemple basique
- Description : Utilisation de
getoptspour gérer les options de ligne de commande :-h(aide),-v(verbeux),-f fichier,-n nombre. Validation des paramètres,shift OPTIND - Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : Traite les options passées en ligne de commande. En mode verbeux affiche les paramètres configurés
- Commandes :
bash exemples/chapitre12/11_getopts_basique.sh -h(affiche l'aide)bash exemples/chapitre12/11_getopts_basique.sh -v -n 5 arg1 arg2(mode verbeux)bash exemples/chapitre12/11_getopts_basique.sh(traitement par défaut)
- Section : Scripts avec options (getopts) > Outil de sauvegarde avancé
- Description : Outil de sauvegarde avec getopts : source (
-s), destination (-d), compression (-c), verbeux (-v), dry-run (-n), exclusions (-e). Construction de commande tar avec tableau - Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : En mode dry-run, affiche la commande tar qui serait exécutée. En mode normal, crée l'archive
- Commandes :
bash exemples/chapitre12/12_sauvegarde_options.sh -h(aide)bash exemples/chapitre12/12_sauvegarde_options.sh -s /tmp -d /tmp/backup -cvn(dry-run verbeux compressé)bash exemples/chapitre12/12_sauvegarde_options.sh -s /tmp -e "*.log" -e "*.tmp" -n(exclusions)
- Section : Exemple complet > Gestionnaire de tâches interactif
- Description : Application complète : ajout/liste/complétion/suppression/recherche de tâches, couleurs ANSI, trap INT/TERM, stockage fichier (
~/.tasks.txt), validation des entrées, confirmation de suppression - Fichier source :
12-scripts_interactifs_et_options.md - Comportement attendu : Menu interactif avec 6 options. Les tâches sont stockées dans
~/.tasks.txtavec timestamps. Les tâches TODO deviennent DONE quand complétées - Commande :
bash exemples/chapitre12/13_gestionnaire_taches.sh(interactif) - Test automatique :
echo "6" | bash exemples/chapitre12/13_gestionnaire_taches.sh - Note : Ce script crée/modifie le fichier
~/.tasks.txt
- Les scripts 01-08 et 13 sont interactifs : ils utilisent
readpour la saisie utilisateur. Les tester avececho "valeur" | bash script.sh - Les scripts 02, 03, 13 utilisent
clearpour effacer l'écran entre les menus - Les scripts 09, 10 ont été adaptés avec 3 itérations au lieu des boucles infinies
while true/while $RUNNINGdu .md - Le script 12 construit la commande tar avec un tableau bash (plus sûr que
eval), comme recommandé dans le .md - Le script 13 stocke les tâches dans
~/.tasks.txt- ce fichier persiste entre les exécutions - Les snippets de la section "Bonnes pratiques" (lignes 964-993) et les commandes de test de signaux (lignes 479-484) n'ont pas été transformés en scripts car ce sont des extraits courts non autonomes