En este artículo, echaremos un vistazo a las declaraciones de casos de bash y cómo usarlos en scripts bash. La declaración de caso es un bash construido y se usa para simplificar la lógica condicional en scripts bash.
[ También te puede interesar:Cómo usar el comando Declare en Linux Bash Shell ]
Para ponerlo en términos simples, cuando su código tiene múltiples condicionales [ if - elif - else ]
declaraciones puede reemplazar las declaraciones condicionales con declaraciones de caso. El concepto de declaración de caso también está disponible en otros lenguajes de programación como C, Perl, Java, Javascript, etc. En algunos idiomas, será una declaración de cambio de caso y en algunos idiomas, será una declaración de caso, difiere según al idioma que utilices.
Comprensión de la sintaxis de la declaración de caso
Antes de usar la declaración de caso en sus scripts, debe comprender su sintaxis.
case expression in pattern1) STATEMENTS ;; pattern2 | pattern3) STATEMENTS ;; pattern-N) STATEMENTS ;; *) STATEMENTS ;; esac
Explicación de la declaración del caso anterior.
- La declaración del caso debe comenzar con la palabra clave case y terminar con esac palabra clave.
- La declaración case evaluará una expresión y determinará si la expresión coincide con alguno de los patrones. La expresión debe ir después de la palabra clave del caso.
- Se evaluarán los patrones y, si coincide con la expresión, se ejecutará la declaración. Los patrones y declaraciones se llaman cláusulas. Para terminar una cláusula use un punto y coma doble
";;"
. - Si un patrón coincide, el resto de los patrones se omiten.
- Puedes crear tantos patrones como quieras.
- El símbolo de asterisco
(*)
se utilizará como patrón predeterminado. Si una expresión no coincide con ninguno de los patrones, se utilizará el patrón predeterminado.
Crear una declaración de caso simple en script
Estoy creando una declaración de caso simple que mostrará el equipo que ganó la liga de campeones según el año. El usuario tiene que pasar el año como entrada.
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016) echo " Winner is Real Madrid";; 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; *) echo " No data available for the given option";; esac
Eche un vistazo al código y la salida anteriores. El usuario pasa el año como entrada y se almacena en la variable WINNER . El año se evaluará contra todos los años dados como patrones dentro de la declaración del caso. Si el año pasado por el usuario no coincide con ningún patrón patrón predeterminado (*)
se utiliza.
También es posible evaluar múltiples patrones en una sola cláusula. Tienes que usar el "|"
símbolo para usar uno o más patrones en una cláusula. Usaremos el mismo código del ejemplo anterior. Si echas un vistazo a los años 2016 y 2017, el mismo equipo ganó la copa. En lugar de crear cláusulas separadas para 2016 y 2017, puede crear una sola cláusula.
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016 | 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; *) echo " No data available for the given option";; esac
Ahora, cuando el usuario pase 2016 o 2017 como entrada, se evaluará en la primera cláusula.
También puede usar la coincidencia de patrones en las declaraciones de casos. Nuevamente estoy modificando el mismo código y agregando dos cláusulas más para evaluar cadenas y otros años.
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016 | 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; [a..z]* | [A..Z]*) echo " Year should be passed as argument. Input is wrong";; [0-9][0-9][0-9][0-9]) echo "No data for the passed year..." esac
Le sugiero que eche un vistazo a ~/.bashrc
archivo y archivos en /etc/init.d/ donde se usará la sentencia case. Revisar estos archivos le dará una idea de cómo se usa en tiempo real.
Eso es todo por este artículo. La declaración de caso es un concepto importante que debe saber cuando trabaja con scripts de shell. Cuando comience a reemplazar declaraciones condicionales con declaraciones de casos, su código será limpio y fácil de mantener.