Introducción
La declaración case
de bash se usa generalmente para simplificar condicionales complejos cuando hay varias opciones diferentes. Usar la declaración case
en lugar de declaraciones if
anidadas ayudará a que sus scripts bash sean más legibles y fáciles de mantener.
La declaración Bash tiene un concepto similar a la declaración case
en Javascript o switch
en C. La principal diferencia es que, a diferencia de la declaración switch
de C, la declaración case
de Bash no continúa buscando un patrón coincidente una vez que lo encuentra. ejecutó las instrucciones asociadas con ese patrón.
Este tutorial cubrirá los conceptos básicos de la declaración case
de Bash y le mostrará cómo usarlo en sus scripts de shell.
Sintaxis de declaración de caso
La sintaxis de la declaración de casos de Bash consta de la palabra clave case
" " seguida del valor a coincidir, la in
" " y uno o más patrones con los bloques de código correspondientes encerrados en ;;
instrucciones " ":
case EXPRESSION in
PATTERN_1)
STATEMENTS
;;
PATTERN_2)
STATEMENTS
;;
PATTERN_N)
STATEMENTS
;;
*)
STATEMENTS
;;
esac
- Cada declaración
case
comienza con la palabra clavecase
, seguida de la expresión que distingue entre mayúsculas y minúsculas y la palabra clavein
. La declaración termina con la palabra claveesac
. - Puede utilizar varias plantillas separadas por el operador
|
. El operador)
finaliza una lista de patrones. - Un patrón puede contener caracteres especiales.
- Una plantilla y sus comandos asociados se conocen como cláusula.
- Cada cláusula debe terminar con
;;
. - Se ejecutan los comandos correspondientes al primer patrón que coincide con la expresión.
- Es una práctica común utilizar el símbolo de asterisco comodín (
*
) como patrón final para definir el caso predeterminado. Este patrón siempre coincidirá. - Si no se encuentra ningún patrón, el estado devuelto es cero. De lo contrario, el estado de retorno es el estado de salida de los comandos ejecutados.
Ejemplo de declaración de caso
A continuación se muestra un ejemplo del uso de una declaración case
en un script bash que imprime el idioma oficial de un país en particular:
#!/bin/bash
echo -n "Enter the name of a country: "
read COUNTRY
echo -n "The official language of $COUNTRY is "
case $COUNTRY in
Lithuania)
echo -n "Lithuanian"
;;
Romania | Moldova)
echo -n "Romanian"
;;
Italy | "San Marino" | Switzerland | "Vatican City")
echo -n "Italian"
;;
*)
echo -n "unknown"
;;
esac
Guarde el script personalizado como un archivo y ejecútelo desde la línea de comando.
bash languages.sh
El script le pedirá que ingrese un país. Por ejemplo, si escribe "Lituania", coincidirá con el primer patrón y se ejecutará el comando echo
en esa cláusula.
El script imprimirá el siguiente resultado:
Enter the name of a country: Lithuania
The official language of Lithuania is Lithuanian
Si ingresa un país que no coincide con ningún otro patrón excepto el símbolo de asterisco comodín predeterminado, digamos Argentina, el script ejecutará el comando echo
dentro de la cláusula predeterminada.
Enter the name of a country: Argentina
The official language of Argentina is unknown
Conclusión
En este punto, debería tener una buena comprensión de cómo escribir declaraciones case
de bash. A menudo se utilizan para pasar parámetros a un script de shell desde la línea de comandos. Por ejemplo, los scripts de inicio utilizan declaraciones case
para iniciar, detener o reiniciar servicios.