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: 18Si 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..else
El 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
8 Comments
Deberías recomendar los espacios, siempre pasa que en algún if o uso de Corchetes se pega como [-f $archivo] a [ -f $archivo ]
y como es costrosa ese error
Andas con todo Jorge. ¡Qué ritmo de publicación!
Por cierto, éxito en tu examen.
Tienes razón, @Bucio, lo mismo al hacer una asignación NOMBRE = valor, que debe ser NOMBRE=valor sin espacios, si no, el error nos meterá en problemas.
saludos !!
genial aporte me encanto pido tu permiso para publicarlo en formato pdf como una guia para todos. o mejor hay que colaborar todos para hacer un buen manual que les parece es solo una idea pero ayudaria a todos
@gerardi claro, por mi no hay ningún problema
tremendo tutorial acerca de bash… Lastima que el tema 2 aparezca como invalido…
@Pastor, como que aparece como invalido ??
y si tengo:
if [ -s "$CORE.$$.tmp ]
que seria?
saludos y gracias.