Skip to content

Latest commit

 

History

History

README.md

Chapitre 12 : Scripts interactifs et options

Exemples pratiques du fichier source 12-scripts_interactifs_et_options.md.


Scripts

1. Menus et interfaces utilisateur

01_menu_select.sh

  • Section : Menus et interfaces utilisateur > Menu basique avec select
  • Description : La commande select crée automatiquement un menu numéroté avec boucle de saisie et case pour 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

02_menu_read.sh

  • Section : Menus et interfaces utilisateur > Menu personnalisé avec read
  • Description : Menu interactif avec fonction show_menu, boucle while true, read pour 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 clear entre les itérations
  • Commande : bash exemples/chapitre12/02_menu_read.sh (interactif)
  • Test automatique : echo "4" | bash exemples/chapitre12/02_menu_read.sh

03_menu_sous_menus.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 clear entre 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

2. Validation des entrées utilisateur

04_validation_nombre.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

05_validation_email.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

06_validation_oui_non.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

07_validation_plage.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

08_validation_timeout.sh

  • Section : Validation des entrées utilisateur > Validation avec timeout
  • Description : Fonction read_with_timeout() utilisant read -t pour 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

3. Gestion des signaux

09_signaux_trap.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

10_signaux_avances.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

4. Scripts avec options (getopts)

11_getopts_basique.sh

  • Section : Scripts avec options (getopts) > Exemple basique
  • Description : Utilisation de getopts pour 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)

12_sauvegarde_options.sh

  • 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)

Exemple complet

13_gestionnaire_taches.sh

  • 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.txt avec 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

Notes techniques

  • Les scripts 01-08 et 13 sont interactifs : ils utilisent read pour la saisie utilisateur. Les tester avec echo "valeur" | bash script.sh
  • Les scripts 02, 03, 13 utilisent clear pour 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 $RUNNING du .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