También es habitual que en nuestros scripts necesitemos de algún dato, mismo que puede ser tecleado por el usuario y que necesitemos guardar en una variable, para ello usaremos read.
Por ejemplo:
#!/bin/bash
echo -n "Cual es tu nombre: "
read NOMBRE
read -p "Cual es tu color favorito $NOMBRE: " COLOR
read -p "Cual es tu edad $NOMBRE: " EDAD
Obtendríamos una salida como:
Cual es tu nombre: jorge
Cual es tu color favorito jorge: negro
Cual es tu edad jorge: 18
Si quisiéramos jugar un poco mas con esta información tenemos a nuestra disposición estructuras de control como en todos los lenguajes de programación.
if..then..elseEl uso de las condiciones te puede resultar muy familiar, así que mostrare unos sencillos ejemplos para que los identifiquemos.Una condición sencilla:
if [ $COLOR = "negro" ]; then
echo "El negro es un enigmático color, lleno de misterio."
fi
Una condición con else:
if [ $COLOR = "negro" ]; then
echo "El negro es un enigmático color, lleno de misterio."
else
echo "El color $COLOR no me gusta, me gusta mas el negro."
fi
Un ejemplo mas (aquí debes ser mas observador):
if [ $EDAD -ge 18 ]; then
echo "Veo que ya eres mayor de edad."
else
echo "Ya pronto serás mayor de edad."
fi
Como vemos, en las condiciones podemos usar los operadores que conocemos como >, <, =, pero en el último ejemplo el operador cambio a un -ge que sería el equivalente a >=, y si eres curioso y probaste intentar con un if [ $EDAD >= 18 ] te darás cuenta que al correr el script te arrojara un error en esa linea argumentando que esperaba un operador unario.
Por ello el uso del los atributos -ge (mayor o igual que), empero, si somos necios y queremos usar >=, pues lo haríamos usando dobles paréntesis y quedaría de la siguiente forma.
if (($EDAD >= 18)); then
echo "Veo que ya eres mayor de edad."
else
echo "Ya pronto serás mayor de edad."
fi
Aquí pongo una lista de los operadores que podemos usar:
-
Comparaciones entre números:
- -eq: es igual a
- -ne: no es igual
- -gt: es mayor que
- -ge: es mayor e igual que
- -lt: es menor que
- -le: es menor o igual que
- <,>,<=,>=, = : los que conocemos
-
Comparación entre Cadenas:
- =, ==: es igual a
- !=: no es igual a
- <: menor que
- >: mayor que
- -z: la cadena esta vacía
- -n: la cadena no esta vacía
-
Operadores Lógicos:
- -a: AND lógico
- -o: OR lógico
En las condiciones también podemos trabajar para comprobar por ejemplo la existencia de un archivo, o bien, comparar si un archivo tiene permiso de escritura, o que se yo, algo que se nos ocurra.
ARCHIVO="script01"
if [ -f $ARCHIVO ]; then
echo "el fichero $FILE si existe"
else
echo "fichero no encontrado"
fi
Jorge Hernandez :: http://jorgeluis.com.mx