¿En qué podemos ayudarte?
Uso de Case
Selección
La selección múltiple es posible sin la necesidad de emplear un anidamiento de if y elif empleando la instrucción case que tiene la siguiente estructura:
case variable in patterns ) commands ;; esac
variable, es la variable por la cual contiene o no un valor que será comprobado con el pattern y ejecutará únicamente los comandos que se encuentran en esa sección del código. Como recomendación pueden emplearse las funciones para mejorar la legibilidad del código.
A continuación se presenta un ejemplo en donde se le solicitará al usuario ingresar una valor entre 1 y 3.
#!/bin/bash echo "Ingrese un numero entre 1 y 3: " read character case $character in 1 ) echo "Ingreso 1." ;; 2 ) echo "Ingreso 2." ;; 3 ) echo "Ingreso 3." ;; * ) echo "No ingreso ningun numero entre 1 y 3." esac
- La instrucción read lee información del teclado después de un “enter”.
- El valor que introduzca el usuario se almacena en la variable character que será considerada para ingresar al case.
- character será comparado con cada uno de los patrones hasta encontrar coincidencia y ejecutar el segmento de código comprendido entre el paréntesis ) y los dos punto y coma ;.
- En caso de que no coincida con ningún patrón la opción por defecto será la que tiene el asterisco * ).
Video: Ejemplo del uso de case
En este video se verá el uso de de case, con el ejemplo:
#! /bin/bash
# Copyright (c) 2015, J. Daniel Cordero
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
echo -n "Presione una letra en el intervalo de la 'a' a la 'd' "
read character
echo "-------------------------------------------------------"
case $character in
a ) echo "Presionó la letra 'a'."
;;
b|B ) echo "Presionó la letra 'b|B'"
;;
[c-f]|[C-F] ) echo "Presionó la letra en el intervalo de la 'c' a la 'f'."
;;
* ) echo "No presionó ninguna letra entre"
echo "el intervalo de la 'a' a la 'd'."
esac