Shell de Unix / Linux - El bucle de selección

los selectloop proporciona una manera fácil de crear un menú numerado desde el cual los usuarios pueden seleccionar opciones. Es útil cuando necesita pedirle al usuario que elija uno o más elementos de una lista de opciones.

Sintaxis

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

Aquí var es el nombre de una variable yword1 a wordNson secuencias de caracteres separados por espacios (palabras). Cada vez que elfor se ejecuta el ciclo, el valor de la variable var se establece en la siguiente palabra en la lista de palabras, word1 a wordN.

Para cada selección, se ejecutará un conjunto de comandos dentro del ciclo. Este bucle se introdujo enkshy se ha adaptado a bash. No esta disponible ensh.

Ejemplo

Aquí hay un ejemplo simple para permitir que el usuario seleccione una bebida de su elección:

#!/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

El menú presentado por el ciclo de selección se parece a lo siguiente:

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

Puede cambiar el mensaje que muestra el ciclo de selección alterando la variable PS3 de la siguiente manera:

$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