Patrón de coincidencia en la declaración de casos bash

Patrón de coincidencia en la declaración de casos bash

En la programación bash, la instrucción del caso ayuda a simplificar condicionales complejos cuando hay múltiples opciones diferentes. En lugar de usar declaraciones IF anidadas, podemos usar la instrucción de caso para que el código BASH sea más legible y mantenible.

La declaración del caso bash comparte similitudes con JavaScript y Cwitle C de C de C. Sin embargo, la principal diferencia es que, una vez que coincide con un patrón, no busca ninguna coincidencia de patrón adicional.

Esta guía cubrirá los conceptos básicos de la declaración de la caja de Bash con varios ejemplos.

Declaración de casos bash

La estructura fundamental de la declaración del caso es la siguiente.

caso en
)
declaraciones
;;
)
declaraciones
;;
*)
declaraciones
;;
ESAC

Aquí hay un breve desglose de la estructura:

  • La declaración de caso comenzará con la palabra clave "caso" y terminará con la palabra clave "ESAC", similar a cómo si el condicional comienza con "si" y termina con "Fi".
  • Puede haber múltiples patrones separados por "|". El operador ")" marca el final de la lista de patrones.
  • Los patrones pueden contener caracteres especiales.
  • Una vez que se combina un patrón, se ejecutarán sus comandos asociados. Juntos, se llama una cláusula. Cada cláusula debe terminar con ";;". Detiene cualquier intento de coincidir para más patrones.
  • La cláusula comodín (*) es una práctica común para definir el caso predeterminado. Siempre coincidirá con la condición.
  • Si no coincide con el patrón, entonces la declaración de caso devuelve cero. De lo contrario, devolverá el valor de salida de los comandos ejecutados.

Tener una comprensión de la declaración bash if-else es beneficioso para comprender y dominar la declaración del caso bash.

Ejemplos de la declaración de casos bash

Declaración de casos utilizando valores numéricos

Ahora que conocemos lo básico, es hora de verlo en acción. Eche un vistazo al siguiente guión.

#!/bin/bash
echo -n "Ingrese el valor:"
valor de lectura
Caso $ valor en
1)
echo "uno" ;;
2)
echo "dos" ;;
3)
echo "tres" ;;
4 | 5)
Echo "mayor que tres" ;;
*)
echo "valor desconocido" ;;
ESAC

Guardar el script. Marquéelo como ejecutable.

Muestra de $ chmod +x.mierda

Ahora, ejecuta el guión.

ps ./muestra.mierda

El script solicitará ingresar un valor. Si el valor coincide con cualquiera de los patrones, ejecutará la cláusula de coincidencia. Si no se encontró una coincidencia, entonces coincidirá con la cláusula predeterminada.

Declaración de casos usando cadenas

En el siguiente ejemplo, usaremos cadenas para que coincidan con los valores.

#!/bin/bash
echo -n "Ingrese el planeta:"
Leer planeta
Caso $ planeta en
Mercurio | Venus | Tierra | Marte | Júpiter | Saturno | Urano | Neptuno)
Echo "$ planeta es un planeta del sistema solar"
;;
Plutón)
echo "$ planeta es un planet enano"
;;
"Planeta nueve")
echo "$ planeta aún no descubierto"
;;
*)
Echo "no del sistema solar"
;;
ESAC

El script se ejecutará como el primer ejemplo. Solicitará un nombre de planeta, verifique si la entrada coincide con cualquier cláusula y ejecutará la cláusula coincidente.

Si examinó cuidadosamente, notará que "Planet Nine" es el único valor envuelto en cotizaciones. Es porque hay espacio en eso. Usando citas, le estamos diciendo al caparazón que lo trate como parte de un solo patrón.

Sensibilidad al caso en el estado de cuenta

Tenga en cuenta que en el último ejemplo, la entrada es sensible a los casos. Este es el comportamiento de bash predeterminado. Sin embargo, podemos decirle a Shell que ejecute el script en modo insensible.

Para hacerlo, agregue la siguiente línea al inicio del script.

$ shopt -s nocasematch

El guión debería verse así.


Ahora, prueba el script. Ingrese el valor con un caso diferente.

ps ./muestra.mierda

Pensamiento final

Esta guía cubre los conceptos básicos de las declaraciones de casos bash. También demuestra cómo implementarlos en scripts bash. Debe sentirse cómodo usando la declaración de casos. Las declaraciones de casos bash a menudo se usan para pasar parámetros a scripts de shell desde una línea de comandos. Por ejemplo, el init scripts usa declaraciones de casos para comenzar, detener y reiniciar servicios. Después de leer esta guía, podrá implementar la declaración de casos bash en sus scripts.

Computación feliz!