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

