En cualquier lenguaje de programación las estructuras condicionales nos permiten evaluar una expresión determinada y en función del resultado ejecutar un proceso u otro. Estas estructuras son básicas en cualquier lenguaje y por supuesto no podía faltar en bash.
Empezamos por la más básica y que sonará a cualquiera que sepa un poco de programación, la estructura if. Esta estructura evalúa una expresión, en caso de cumplirse ejecuta lo que contengamos dentro del if. En caso de querer ejecutar algo cuando no se cumple la expresión utilizamos el else para completar la estructura. La estructura sería algo así:
if [ expresión a evaluar ]; then
código a ejecutar
else
código a ejecutar
fi
Siguiendo con esto vamos a crear desde el terminal y con gedit un archivo llamado conditionals.sh. En el archivo escribimos el siguiente código:
#!/bin/bash
var1=1
var2=2
if [ $var1 = $var2 ]; then
echo "$var1 y $var2 son iguales"
else
echo "$var1 y $var2 son diferentes"
fi
En este ejemplo creamos dos variables y con ayuda de la estructura if sacamos por pantalla un mensaje diciendo si son iguales o no. Fijaos en la utilización de las variables, tanto en la expresión que las evalúa como en el echo. Si además modificáis las variables del ejemplo veréis como cambia en función de si son iguales o no.
El otro condicional que podemos utilizar es el comunmente llamado switch, el cual toma un valor y sobre una serie de ramas dadas decide sobre cual debe ir. En bash se utiliza con la palabra reservada case y su estructura sería así:
case expresión a evaluar in
resultado 1º)
código a ejecutar
;;
resultado 2º)
código a ejecutar
;;
resultado nº)
código a ejecutar
;;
esac
Veamos un ejemplo. Sobre el archivo conditionals.sh podéis escribir a continuación de lo que ya tenemos, lo siguiente:
var3=2
case $var1 in
$var2 )
echo "$var2 caso 1"
;;
$var3 )
echo "$var3 case 2"
;;
* )
echo "otro"
;;
esac
En este caso añadimos una tercera variable y evaluamos la primera con respecto al resto, en las dos ramas que tenemos, saldrá por la rama en la que coincida el valor de las variables. Además se añade al final un caso por si no coincide con ninguno de los valores marcada con un asterisco.