Introducción a Bash: control de flujo en nuestro script (if/else)
Mayo 25th, 2009 Posted in Bash, linux, programacion
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?


