Operaciones aritméticas y lógicas en Shell Script
Aritméticas
En un Bash podemos realiza directamente sumas, restas, divisiones, multiplicaciones y resto de números enteros. Para ello tendemos que poner la operación dentro de $(( )).
Operadores: +, -, /, *, % (% es el resto que resulta al realizar la división entre dos números)
Por ejemplo:
echo $((25+6))
echo $((24%5))
daría como resultado 4
Para operaciones con decimales tendríamos que ayudarnos de comandos externos como bc.
Ejemplo:
echo 6.5*4.99 | bc
Lógicas
La finalidad de las operaciones lógicas es determinar si algo es verdadero o falso. Para poder hacer multitud de comprobaciones, tenemos al orden test
. Se puede ejecutar con el comando test
seguido de la comprobación que queremos hacer, o delimitar la comprobación entre corchetes.
Es decir, si quiero comprobar si $A es igual a $B puedo poner test $A = $B
, pero también puedo poner [ $A = $B ]
Operaciones que podemos hacer con test
Comparación de números
SINTAXIS | DESCRIPCIÓN |
ENTERO1 -eq ENTERO2 | ENTERO1 es igual que ENTERO2 |
ENTERO1 -ge ENTERO2 | ENTERO1 es mayor o igual que ENTERO2 |
ENTERO1 -gt ENTERO2 | ENTERO1 es mayor que ENTERO2 |
ENTERO1 -le ENTERO2 | ENTERO1 es menor que o igual que ENTERO2 |
ENTERO1 -lt ENTERO2 | ENTERO1 es menor que ENTERO2 |
ENTERO1 -ne ENTERO2 | ENTERO1 no es igual que ENTERO2 |
Comparación de texto
SINTAXIS | DESCRIPCIÓN |
CADENA1 = CADENA2 | CADENA1 es igual que CADENA2 |
CADENA1 > CADENA2 | CADENA1 es mayor que CADENA2 |
CADENA1 < CADENA2 | CADENA1 es menor que CADENA2 |
CADENA1 != CADENA2 | CADENA1 no es igual que CADENA2 |
-n CADENA | Cierto si la longitud de la cadena es distinta de cero |
Comprobaciones sobre ficheros y directorios
SINTAXIS | DESCRIPCIÓN |
-d RUTA | Cierto si la RUTA existe y es un directorio |
-e RUTA | Cierto si la RUTA existe sea el elemento que sea |
-f RUTA | Cierto si la RUTA existe y es un fichero normal |
-r RUTA | Cierto si la RUTA existe y se puede leer |
-w RUTA | Cierto si la RUTA existe y se puede escribir |
-x RUTA | Cierto si la RUTA existe y es ejecutable |
-s RUTA | Cierto si la RUTA existe y su tamaño es mayor que cero |
Otras expresiones
! EXPRESIÓN | Negación: cierto si la EXPRESIÓN es falsa |
EXPRESIÓN1 -a EXPRESIÓN2 | Cierto si EXPRESIÓN1 y EXPRESIÓN2 son ciertas. Las dos |
EXPRESIÓN1 -o EXPRESIÓN2 | Cierto si EXPRESIÓN1 o EXPRESIÓN2 son ciertas. Alguna de ellas |
Uso principal
La utilidad que tienen las operaciones lógicas es la toma de decisiones. Así podré realizar una funciones si una expresión (o pregunta) es verdadera u otras si es falsa.
Suponiendo que hacemos un script que le indicamos con el primer parámetro nuestra edad, haríamos:
Si $1 es mayor o igual que 18 muestro un mensaje de que eres mayor de edad en caso contrario muestro un mensaje diciendo que no lo eres
En el lenguaje de script:
if [ $1 -ge 18 ]; then echo “Eres mayor de edad” else echo “Eres menos de edad” fi
Este tipo de estructuras se llaman condicionales y las veremos en el siguiente post.
Etiqueta:portada