En la nota anterior expliqué el uso de las condicionales en Bash, en esta ocasión les platicaré el uso del case
. Aunque el elif
resulta muy útil para resolver una gran cantidad de problemas y situaciones, el case
representa una mejor opción ya que permite manipular y ver de forma más clara todas las opciones.
La sintaxis es la siguiente:
case expresion in
caso1)
comandos
;;
caso2)
comandos
;;
#...
*)
comandos
;;
esac
Esta estructura permite controlar qué lista de comandos se ejecutarán, de acuerdo a si se cumplen las condiciones o no.
Ejemplo:
#!/bin/bash
#Control de flujo: case
echo "Adivina mi edad"
read edad
case $edad in
30)
echo "¡Correcto!"
;;
*)
echo "¡Incorrecto!"
;;
esac
En este script hay dos posibles casos, el primero es cuando el valor es 30 entonces imprime “¡Correcto!” y el segundo caso que contiene un [ se usa para indicar todas las cadenas que no cumplen con las características de los casos anteriores.
Ejemplo:
#!/bin/bash
#Control de flujo: case
echo "Escribe una frase"
read frase
case $frase in
a*)
echo "La frase empieza con a"
;;
c*t)
echo "La frase empieza con c y termina con t"
;;
*com)
echo "La frase termina con la cadena com"
;;
*)
echo "La frase no cumple con ninguna de las condiciones"
;;
esac
En este script hay cuatro posibles casos; el primero es cuando la cadena inicia con el caracter a, el segundo cuando la cadena comienza con c y termina con t, el tercero cuando la cadena termina con la subcadena com y el último caso que contiene un [ se usa para indicar todas las cadenas que no cumplen con las características de los casos anteriores.
Algunas reglas para tomar en cuenta
Paréntesis de cierre ) después de cada caso (condición).
Doble punto y coma ;; delimita la lista de comandos que serán ejecutados cuando se cumpla el caso (condición).
Finalmente cerrar la sentencia case
con esac
.
Espero esta información te haya sido de utilidad, como te pudiste dar cuenta el uso del case
es muy simple. En la próxima nota continuaré con el tema Bash: argumentos y funciones desde línea de comandos. Hasta pronto.
Excelente explicación, te lo agradezco!
Hola Nahuel
Gracias por leernos y por tu comentario.
Una consulta, estoy haciendo un script de administración de usuarios y cuando llega el caso 4 según cierta elección al usuario al puede salir un mensaje de error. Lo que quiero saber yo es si hay una manera de regresar y pedir nuevamente el caso 4, porque lo que puedo hacer ahora es regresar al menú de inicio. Muchas gracias.
P.D. No lo adjunto porque es demasiado largo.
Tienes que meter el proceso en un while, para que, si cierta variable es distinta de un valor esperado, regrese al tope del while y vuelva a pedir el valor.
No tengo demasiada experiencia en scripts, pero por lo que yo llevo hecho, si en esa opción 4 pones un bucle do while del que solo saldrás cuanto den una opción de tu consideres correcta e indicaras que se salga, sino se estará ejecutando repetidamente ese bucle, son lo que volverá a pedir la elección de nuevo.
fue muy util y gracias por compartir esta informacion
hola me gusta mucho hacer scripts, y mucho mas mascara de mensajes