La base indiscutible (después de las variables) de todo lenguaje, es la habilidad de tomar decisiones dependiendo de qué circunstancia acontezca en el momento de la ejecución del guion. Para este tipo de casos los lenguajes ofrecen su juego de condicionales y por supuesto las opciones para bucles, que le permiten comportarse de una manera inteligente.

Un ejemplo sencillo sería el siguiente:

#!/bin/bash
VARIABLE=correcto

if [ "$VARIABLE" = "correcto" ]; then
echo "valido"
else
echo "falso"
fi

En este caso, debemos considerar que los espacios entre if [ la variable, el operador, la cadena y el ] final, son importantes, debido a que por defecto no los limita al declararlos, entonces hay que tener cuidado con estos detalles.

El resultado de este ejemplo sería evidentemente el siguiente:

[root@ns01 bash]# sh bash.sh
valido
[root@ns01 bash]#

En el código en la línea 4, utilizamos el operador = que funciona para indicar que si la variable es igual al contenido de la cadena, entonces debe lanzar el resultado positivo.

No obstante IF, THEN y FI, no son las únicas estructuras disponibles, a continuación el detalle de las mismas:

if/else: Ejecuta una serie de comandos dependiendo si una cierta condición se cumple o no.

for: Ejecuta una serie de comandos un número determinado de veces, siempre y cuando se cumplan las condiciones.

while: Ejecuta una seria de comandos mientras que una determinada condición sea cumpla. En general es muy similar a for.

until: Ejecuta una serie de comandos hasta que una determinada condición se cumpla.

case: Ejecuta una o varias listas de comandos dependiendo del valor de una variable.

select: Permite seleccionar al usuario una opción de una lista de opciones en un menú.

La mayoría de condiciones utilizadas con estas construcciones son comparaciones de cadenas alfanuméricas o numéricas, valores de terminación de comandos y comprobaciones de atributos de ficheros. Antes de seguir viendo como estas construcciones operan, vamos a ver como las condiciones se pueden definir y trabajar propiamente hablando.