Introducción a Bash: control de flujo en nuestro script (if/else)

Hoy vamos a añdadir un poco más de salsa a nuestra introdicción a Bash. Vamos a ver cómo funciona el if/else.

La estructura de un if/else en bash es la siguiente:

if [ condicion ]; then
      ...
else
      ...
fi

(el “else” es opcional).

Ojo, los corchetes deben ir siempre separados de la condición por un espacio.

Comparaciones aritméticas:

Aquí tenéis una lista de comparaciones que se pueden hacer entre números.

  • -lt : menor que (less than)
  • -gt : mayor que (greater than)
  • -le : menor o igual (less or equal)
  • -ge : mayor o igual (greater or equal)
  • -eq : igual a (equal)
  • -ne : distinto de (not equal)

Compraraciones con cadenas

  • = : igual
  • != : distinto
  • < : menor que
  • > : mayor que
  • -n c1 : se cumple si la cadena c1 no está vacía
  • -z s1 : se cumple si la cadena c1 está vacía

If anidados

Desde luego, se pueden usar if/else dentro de otros if/else, se pueden anidar sin problemas.

Ejemplo

Y para ilustrar todo esto vamos a ver un sencillo ejemplo que espera que le pasemos una palabra como parámetro:

#!/bin/bash
 
if [ $# -eq 0 ]; then
	echo "Dime algo, por favor"
else
	if [ $1 = 'hola' ]; then
		echo "Hola! que tal?"
	else
		echo "No te entiendo, solo entiendo la palabra 'hola'"
	fi
fi

Si lo guardamos en un fichero llamado if.sh y le damos permisos de ejecución (chmod +x if.sh) esto es lo que responderá dependiendo de qué parámetros usemos:

$ ./if.sh
Dime algo, por favor
$ ./if.sh nada
No te entiendo, solo entiendo la palabra 'hola'
$ ./if.sh hola
Hola! que tal?

Deja un comentario