Gestion de menu avec select

Syntaxe :

select var in item1 item2 item3 ..... itemn
do
     commandes
done

La commande interne select est une structure de contrôle de type boucle qui permet d'afficher de manière cyclique un menu.
La liste des items sera affichée à l'écran à chaque tour de boucle.
Les items sont indicés automatiquement.
La variable var sera initialisée avec l'item correspondant au choix de l'utilisateur.

Cette commande utilise également deux variables réservées :

  • La variable PS3 représente le prompt utilisé pour la saisiedu choix de l'utilisateur.
    Sa valeur par défaut est #?. Elle peut être modifiée si on le souhaite.
  • La variable REPLY qui contient l'indice de l'item sélectionné.

La variable var contient le libellé du choix et REPLY l'indice de ce dernier.

Exemple :

$ nl select.sh
     1  #!/bin/bash
     2
     3  function sauve {
     4          echo "Lancement de la sauvegarde"
     5  }
     6
     7  function restaure {
     8          echo "Lancement de la restauration"
     9  }
    10
    11  PS3="Votre choix : "
    12
    13  select item in "- Sauvegarde -" "- Restauration -" "- Fin -"
    14  do
    15          echo "Vous avez choisi l'item $REPLY : $item"
    16          case $REPLY in
    17                  1)
    18                          # Appel de la fonction sauve
    19                          sauve
    20                          ;;
    21                  2)
    22                          # Appel de la fonction restaure
    23                          restaure
    24                          ;;
    25                  3)
    26                          echo "Fin du script"
    27                          exit 0
    28                          ;;
    29                  *)
    30                          echo "Choix incorrect"
    31                          ;;
    32          esac
    33  done
$

Exécution :

$ ./select.sh
1) - Sauvegarde -
2) - Restauration -
3) - Fin -
Votre choix : 2
Vous avez choisi l'item 2 : - Restauration -
Lancement de la restauration

La saisie de la touche [Entrée] permet de réafficher le menu :

$ .
Votre choix :     # Appui sur la touche [Entrée]
1) - Sauvegarde -
2) - Restauration -
3) - Fin -
Votre choix : 3
Vous avez choisi l'item 3 : - Fin -
Fin du script
$