LinuxParty
NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
En Shell Script, las operaciones matemáticas se realizan utilizando el intérprete de comandos expr
. Con expr
, puedes realizar operaciones aritméticas simples como sumas, restas, multiplicaciones y divisiones.
Aquí hay algunos ejemplos de cómo realizar operaciones matemáticas en Shell Script:
# Suma
result=$(expr 2 + 2)
echo "2 + 2 = $result"
# Resta
result=$(expr 5 - 3)
echo "5 - 3 = $result"
# Multiplicación
result=$(expr 4 \* 5)
echo "4 * 5 = $result"
# División
result=$(expr 10 / 2)
echo "10 / 2 = $result"
Es importante notar que en Shell Script es necesario escapar los operadores * y / para que sean tratados como operadores matemáticos en lugar de comandos.
Además de las operaciones básicas, expr
también permite realizar operaciones más complejas como cálculos de modulos y comparaciones lógicas. También es posible realizar operaciones matemáticas utilizando otras herramientas como bc
o incluso utilizando directamente el intérprete de comandos con sintaxis específica para este propósito, como por ejemplo:
result=$((2 + 2))
echo "2 + 2 = $result"
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)
- "+": Para sumar valores.
- "-": Para restar valores.
- "*": Para multiplicar valores.
- "/": Para dividir valores.
- "%": Para calcular el resto de una división.
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
La lógica de Bash
Para el terminal, los caracteres que tienen un significado lógico en la comparación o evaluación de operaciones aritméticas y de archivos son:
Evaluación de operaciones aritméticas
- "-lt": Menor que
- "-le": Menor o igual que
- "-eq": Igual que
- "-ge": Mayor o igual que
- "-gt": Mayor que
- "-ne": Distinto que
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
Otro ejemplo: Script caracruz.sh
#!/bin/bash VALOR=$RANDOM RESTO=$((VALOR%2)) # SIFUERACADENA="\"$RESTO\"" echo $RESTO if [ $RESTO -eq 0 ] ; then printf "\033[1;32m - - - - - - - - - - > ¡¡ CRUZ !! --> $VALOR \n" printf " \n" printf " ___ \n" printf " / \ \n" printf "| CRUZ | \n" printf " \__ / \n" printf " \n" fi if [ $RESTO -eq 1 ] ; then printf "\033[1;33m - - - - - - - - - - > ¡¡ CARA !! --> $VALOR" printf " \n" printf " ___ \n" printf " / \ \n" printf "| CARA | \n" printf " \__ / \n" printf " \n" fi printf "\033[0;37m" echo ""

-
Scripting
- Operaciones matemáticas en Shell Scripts
- 30 formas de validar archivos de configuración o scripts en Linux
- Operaciones artiméticas en Shell Scripts
- Cómo intercambiar el contenido de dos archivos en Linux
- Buscar directorios vacíos en Linux y borrarlos si procede.
- Shell Script Linux: Renombra quitando espacios
- Usar con crontab - último sábado del mes
- Shell Script de Linux para analizar un Fichero Access.log
- Analizar ficheros log de Linux con Scripts
- woof Código fuente
- Como tener seguro, protegido y encriptado tu Navegador Web Firefox (versión mejorada - versión 3)
- Arrays en Bash y Loops: iterar a través de los valores de la matriz
- Pasar una variable a AWK mediante la Shell.
- System Tar and Restore: un versátil script de copia de seguridad del sistema para Linux
- Cómo instalar NodeJS 14/16 y NPM en Rocky Linux 8