Uso de Case

<< Regresar

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

Última actualización: septiembre 06, 2018

Deja un comentario