Unix / Linux Shell - La boucle de sélection

le selectloop fournit un moyen simple de créer un menu numéroté dans lequel les utilisateurs peuvent sélectionner des options. Il est utile lorsque vous devez demander à l'utilisateur de choisir un ou plusieurs éléments dans une liste de choix.

Syntaxe

select var in word1 word2 ... wordN
do
   Statement(s) to be executed for every word.
done

Ici var est le nom d'une variable etword1 à wordNsont des séquences de caractères séparés par des espaces (mots). Chaque fois quefor la boucle s'exécute, la valeur de la variable var est mise au mot suivant dans la liste de mots, word1 à wordN.

Pour chaque sélection, un ensemble de commandes sera exécuté dans la boucle. Cette boucle a été introduite danskshet a été adapté en bash. Il n'est pas disponible ensh.

Exemple

Voici un exemple simple pour permettre à l'utilisateur de sélectionner une boisson de son choix -

#!/bin/ksh

select DRINK in tea cofee water juice appe all none
do
   case $DRINK in
      tea|cofee|water|all) 
         echo "Go to canteen"
         ;;
      juice|appe)
         echo "Available at home"
      ;;
      none) 
         break 
      ;;
      *) echo "ERROR: Invalid selection" 
      ;;
   esac
done

Le menu présenté par la boucle de sélection ressemble à ce qui suit -

$./test.sh
1) tea
2) cofee
3) water
4) juice
5) appe
6) all
7) none
#? juice
Available at home
#? none
$

Vous pouvez modifier l'invite affichée par la boucle de sélection en modifiant la variable PS3 comme suit -

$PS3 = "Please make a selection => " ; export PS3
$./test.sh
1) tea
2) cofee
3) water
4) juice
5) appe
6) all
7) none
Please make a selection => juice
Available at home
Please make a selection => none
$
unix-shell-loops.htm