Este documento describe la estructura CASE en Linux. CASE permite evaluar una expresión que puede tomar diferentes valores y ejecutar acciones diferentes dependiendo del valor. Ofrece ventajas sobre IF/ELSE al permitir más de dos opciones y menos código. El documento explica la sintaxis de CASE y provee un ejemplo de script que usa CASE para mostrar un menú de opciones y ejecutar acciones diferentes basadas en la opción seleccionada por el usuario.
1. TRABAJO DE ELECTIVA LIBRE II
LINUX
CASE
MARTA DAVID
JORGE ARMANDO YEPEZ
TUTOR:
Juan Manuel Muskus
UNIVERSIDAD DE CORDOBA
FACULTAD DE CIENCIAS BASICAS E INGENIERIA
INGENIERIA DE SISTEMAS
SAHAGUN
2011
2. INTRODUCCIÓN
Algunas veces resulta de gran ayuda, desde el punto de vista de eficiencias y
facilidad de lectura de un programa, tener alguna forma de expresar una
desviación del flujo de control hacia múltiples procesos en función del resultado
de la evaluación de un predicado; usualmente, a la estructura de control que
satisface el requerimiento anterior, se le denomina la estructura CASE. En
general, case se considera una evolución de if fi, ya que permite el mismo
resultado, escribiendo menos código.
3. Objetivos
• Conocer la estructura y funcionamiento del case
• Conocer las ventajas que ofrece esta sentencia selectiva.
• saber manejar el control de flujo de nuestro algoritmo.
4. CASE
Es una estructura de control empleada en programación, a la que pertenecen
otras estructuras como el if, if else o until, entre otras, así como combinaciones
propias de determinados lenguajes de programación.
El case no es tan popular como el if, pero se utiliza con regularidad en la
programación. La estructura de evaluación múltiple (case) evaluara una
expresión que podrá tomar n valores distintos, 1,2...n según se elija uno de
estos valores en la condición, se realizara una de las n acciones o lo que es
igual, el flujo del algoritmo seguirá un determinado camino entre los n posibles
Esta forma es muy útil cuando se tiene que elegir entre más de dos opciones,
por lo que le llamaremos forma de selección múltiple.
En programación muchas veces es necesario comprobar el valor de una
variable con case y validar si coincide con algún valor ingresado. Esto es
posible solucionarlo con el if pero cuando son muchas posibles opciones a
evaluar es mejor la ayuda del case, evitando escribir tantos if
Por ejemplo, si es necesario ejecutar una de cien rutinas diferentes en función
del valor de un código de 2 dígitos, podemos representar este proceso
mediante 100 estructuras IF, sin embargo el sentido común nos induce a
pensar que no hay razón para adherirnos rígidamente a las tres estructuras
básicas de control y en lugar de 100 IF usaríamos la estructura CASE, esta
estructura utiliza el valor de una variable para determinar cual, de varias
rutinas, será ejecutada.
La siguiente figura representa la selección múltiple:
5. Su funcionamiento es el siguiente:
• Se mira si el valor del selector aparece en alguna de las listas de
constantes.
• Si aparece, entonces se ejecuta la sentencia correspondiente
• Si no aparece el valor del selector entonces no se hace nada
Estructura de uso es la siguiente:
#bin/bin/bash
Case $nombre_variable in
Valor_uno)
Instrucción
Instrucción
;;
Valor_dos)
Instrucción
Instrucción
;;
Valor_tres)
Instrucción
Instrucción
;;
*)
Instrucción
Instrucción
;;
esac
6. • En la línea 3 Case $nombre_variable in se evalúa dicha opción y
dependiendo cual sea el caso ejecuta las instrucciones necesarias es
cogiendo uno de los posibles valores en este caso los que aparecen en
las siguientes líneas (4, 8,12).
• En la línea 15 la opción *) aparea con cualquier cadena, por lo que actúa
como "en otro caso"; es útil para dar instrucciones sobre el uso del
comando.
• El doble punto y coma (;;) se utiliza para indicar que hasta ahí llega una
sentencia y da paso a la siguiente.
• El esac no es más que case escrito al revés y se utiliza para el cierre de
la estructura y funciona como el ya reconocido (end.) en programación.
Para entender mejor el funcionamiento del case escribimos un script que
contiene una lista de opciones y dependiendo escogidas en el programa
ejecutara las instrucciones especificadas. El código del script es el siguiente:
#!/bin/bash
Echo “ MENU DE OPCIONES ”
Echo “ 1 abrir el editor de texto ”
Echo “ 2 listar ficheros del directorio actual ”
Echo “ 3 mostrar saludo de bienvenida ”
Echo “ 4 salir del programa ”
Echo “ selecciona una opción ”
Read op
Case $op
1)
gedit
exit 0
;;
2)
ls-l
exit 0
;;
3)
Saludo.sh
7. exit 0
;;
4)
exit 0
;;
*)
echo “ No seleccionó ninguna opción ”
exit 1
;;
esac
• Desde la línea dos hasta la ocho son comentarios que me mostrará la
apariencia de nuestro programa cuando se ejecute.
• La línea 9 (read op), permite capturar el valor de la opción a evaluar en
el case.
• En la línea 11 (case $op In), se evalúa dicha opción y dependiendo
cual sea el caso que se quiere se ejecutara la instrucciones necesarias.
• Si se toma la opción 1 se ejecutara la líneas 13 y 14 y se abrirá el editor
de texto del entorno genome.
• Si se toma la opción 2 se ejecutara las líneas 17 y 18 y se listaran los
ficheros del directorio actual.
• Si se toma la opción 3 se ejecutara las líneas 21 y 22 se abre el
programa saludo.sh (el cual es un script que ya debe de estar echo).
• Si se toma la opción 4 se ejecutara las líneas 25 y 26 y se sale del
programa.
• Si no se escogió ninguna opción valida se ejecutara las líneas 28 y 29.
8.
9. Ejercicio:
#!/bin/bash
case $# in #con este case validamos que el numero de parametros sea correcto
2) #nos interesan dos casos que sean dos parametros o que no lo sean
# Aquí vemos si el numero de parámetros es 2
echo "digita dos valores";
echo "presiona 1 para sumar";
echo "presiona 2 para restar";
echo "presiona 3 para multiplicar";
echo "presiona 4 para dividir";
echo "presiona 5 para obtener modulo o resto ";
echo "presiona 6 para reiniciar";
echo "presiona 7 para salir";
read orden; # Aquí de damos la orden para que lea la opción desde el teclado
case $orden in
1)
suma=`expr $1 + $2`
echo "la suma es $suma"
;;
2)
resta=`expr $1 - $2`
echo "la resta es $resta"
;;
3)
multiplicación=`expr $1 * $2`
echo "la multiplicacion $multiplicacion"
;;
4)
dividir=`expr $1 / $2`
echo "la division $dividir"
;;
5)
modulo=`expr $1 % $2`
echo "el resto es $modulo"
;;
6)
echo "Reiniciando...."
sleep 3
./prueba.sh
;;
7)
echo "Saliendo...."
sleep 2
exit 0
;;
*) echo "No ha seleccionado nada"
esac
;;
*) echo "parametros incorrectos" # vemos cualquier otro caso
Esac