GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo trabajar con declaraciones de casos en scripts Bash

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.


Linux
  1. ¿Cómo hacer que Vim funcione correctamente con Tmux?

  2. ¿Cómo configurar Bash para ejecutar *.exe con Mono?

  3. ¿Cómo hacer coincidir patrones que no distinguen entre mayúsculas y minúsculas con Ls?

  4. Declaración de Bash If-Else con ejemplos

  5. 5 ejemplos de declaraciones de casos Bash

Cómo usar declaraciones condicionales en Bash Scripts

Cómo crear documentos con scripts Bash

Cómo trabajar con Ansible Provisioner en Vagrant

Cómo usar el comando echo en Bash Scripts en Linux

Cómo trabajar con declaraciones de casos en scripts Bash

Sintaxis de Bash If Else con ejemplos