case con Bash

Estructura de control case para Linux

La estructura case en Linux sirve para que podamos tomar decisiones basadas en múltiples valores posibles, cuando necesitamos realizar diferentes acciones en cada caso.

La descripción puede sonar algo complicada, pero es una estructura muy sencilla de comprender y de usar. Aporta a nuestro código una gran facilidad de lectura si la comparamos con anidar varios niveles la estructura if de Linux.

#!/bin/bash

case una_expresion in
    valor uno)
        # ejecutamos bloque de código
        ;;
    valor dos)
        # ejecutamos bloque de código
        ;;
    valor tres)
        # ejecutamos bloque de código
        ;;
    *)
        # ejecutamos bloque de código para cualquier otro valor no especificado anteriormete
        ;;
esac

Si la una_expresión coincide con alguno de los valores definidos se ejecuta el bloque de código de este valor. Si no coincide con ninguno se ejecuta el bloque de código del asterisco * que hay al final.

En este ejemplo vamos a elegir el tipo de listado haciendo uso de la estructura case para Bash. Veremos que es muy sencillo de comprender.

Echa un vistazo a las variables especiales con Bash si no sabes cómo recoger el valor de los argumentos cuando llamamos a un script.sh.

El tipo de listado ls de Linux que queremos se lo pasaremos como primer argumento cuando llamemos a nuestro script. Estando disponibles los definidos en el case: basico, largo, ficheros y directorios.

#!/bin/bash

opcion=$1

case $opcion in
    basico)
        ls
        ;;
    largo)
        ls -l
        ;;
    ficheros)
        ls -l -f
        ;;
    directorios)
        ls -l -d
        ;;
    *)
        echo "No elegiste tipo de búsqueda especial"
        ;;
esac
Haciendo uso de la estructura case en Bash

Rangos con case en Bash

Existe la posibilidad que necesitemos que nuestros valores sean rangos o que necesitemos ejecutar un mismo bloque de código con varios valores.

Con la estructura de control case podemos controlar esto muy fácilmente.

#!/bin/bash

opcion=$1

case $opcion in
    1)
        echo "Primer número"
        ;;
    2)
        echo "Segundo número"
        ;;
    3)
        echo "Tercer número"
        ;;
    4)
        echo "Cuarto número"
        ;;
    5)
        echo "Quinto número"
        ;;
    6|7|9)
        echo "Mayor que 5, menor que 10, pero no es 8"
        ;;
    *)
        echo "Puede ser el 8 o cualquiera mayor de 10"
        ;;
esac

También podemos indicar rangos de caracteres para nuestros valores.

#!/bin/bash

opcion=$1

case $opcion in
    [a-g])
        echo "Letras entre a-g"
        ;;
    [h-n])
        echo "Letras entre h-n"
        ;;
    *)
        echo "resto de letras de la n en adelante"
        ;;
esac

Incluso podemos hacerlo con números.

#!/bin/bash

opcion=$1

case $opcion in
    [1-2])
        echo "Primer o segundo número"
        ;;
    [3-9])
        echo "Mayor de 2 y menor de 10"
        ;;
    *)
        echo "Cualquier número mayor de 9"
        ;;
esac
Haciendo uso de la estructura case con rangos en Bash

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *