Introducción
Las declaraciones de casos de bash se utilizan generalmente para simplificar condicionales complejos cuando tiene varias opciones diferentes. El uso de la declaración de caso en lugar de las declaraciones if anidadas le ayudará a que sus scripts de bash sean más legibles y más fáciles de administrar.
La instrucción case Bash tiene un concepto similar con la instrucción switch Javascript o C. La principal diferencia es que, a diferencia de la instrucción switch C, la instrucción Case Bash no continúa buscando una coincidencia de patrón una vez que se encuentra y ejecuta.
En este tutorial, cubriremos los conceptos básicos de las declaraciones de Case Bash y le mostraremos cómo usarlos en scripts de shell.
Sintaxis de la declaración de caso
La declaración Case Bash tiene la siguiente forma:
case EXPRESSION in
PATTERN_1)
STATEMENTS
;;
PATTERN_2)
STATEMENTS
;;
PATTERN_N)
STATEMENTS
;;
*)
STATEMENTS
;;
esac
- Cada instrucción Case comienza con la palabra clave
case
seguida de la expresión homes y de la palabra clavein
. La declaración termina con la palabra claveesac
. - Puede utilizar varias condiciones separadas por el
|
. El)
finaliza una lista de patrones. - Un patrón puede tenercaracteres especiales.
- Un patrón y los comandos asociados se conocen como cláusulas.
- Cada cláusula debe resolverse 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 modelo siempre coincidirá. - Si no se encuentra ninguna coincidencia, el estado de devolución es cero. De lo contrario, el estado de retorno es el estado de salida de los comandos ejecutados.
Ejemplo de caso
A continuación, se muestra un ejemplo que utiliza la declaración Case en un script Bash que imprimirá el idioma oficial de un país determinado:
#!/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 comandos.
bash languages.sh
El guión le pedirá que ingrese un país. Por ejemplo, si escribe "Lituania", coincidirá con el primer patrón y echo
en esa cláusula.
El script imprimirá la siguiente salida:
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, asumimos que en 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
A estas alturas, debería tener un buen conocimiento de cómo escribir declaraciones de casos 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 usan sentencias Case para iniciar, detener o reiniciar servicios.