
En este artículo, nos centraremos en cómo Hacer matemáticas en bash script. podemos Realizar operaciones aritméticas en Bash Utilice herramientas integradas y externas. Primero, veremos las herramientas integradas.
notas: A diferencia de otros lenguajes de programación, las operaciones aritméticas bash no son sencillas (al menos para mí). Hay varios programas incorporados y externos de bash que hacen lo mismo. No se recomienda el shell si desea realizar cálculos matemáticos complejos.
Haz matemáticas en Bash usando el comando integrado «let»
usar let
comando, puede realizar operaciones aritméticas, incrementales, bit a bit y condicionales. La desventaja del comando let es que no puede manejar valores de punto flotante.
Este let
Un comando en bash es un comando incorporado. Puede verificar esto ejecutando el siguiente comando en una terminal.
$ type -a let
let is a shell builtin
Ejecute el siguiente comando para obtener la sección de ayuda donde puede encontrar una lista de operadores admitidos por el comando «let».
$ let -help
Salida de muestra:
Hay algunos puntos importantes a tener en cuenta al usar el comando let.
- La salida de cualquier operación debe asignarse a una variable y luego imprimirse. El comando ‘let’ no le permite imprimir la salida inmediatamente.
- No se permiten espacios entre operador y operando.
Cree un script de shell, copie y pegue el siguiente código de muestra e intente ejecutar el script. En el código dado a continuación, estoy realizando operaciones aritméticas. Como se mencionó anteriormente, la salida de una expresión debe asignarse a una variable antes de imprimirla.
#!/usr/bin/env bash let NUMBER1=10 let NUMBER2=3 # Addition => + operator let ADD=$NUMBER1+$NUMBER2 echo "Addition of two numbers : ${ADD}" # Subtraction => - operator let SUB=$NUMBER1-$NUMBER2 echo "Subtraction of two numbers : ${SUB}" # Multiply => * operator let MUL=$NUMBER1*$NUMBER2 echo "Multiply two numbers : ${MUL}" # Divide => / operator let DIV=$NUMBER1/$NUMBER2 echo "Division of two numbers : ${DIV}" # Remainder => % operator let REM=$NUMBER1%$NUMBER2 echo "Remainder of two numbers : ${REM}" # Exponent => ** operator let EXPO=$NUMBER1**$NUMBER2 echo "Exponent of two numbers : ${EXPO}"

También puede realizar operaciones posteriores al incremento y posteriores al decremento. Esta acción se usará principalmente cuando estemos ejecutando bucles en scripts.
- La operación de post-incremento incrementará el valor de la variable a variable + 1.
- La operación de preincremento incrementa el valor de la variable para variables – 1.
let variable++
let variable--

También puede realizar otras operaciones de comparación, como verificar la igualdad, la desigualdad, mayor que, menor que, etc.Recomiendo encarecidamente no usar let
comando para realizar cualquier operación de comparación porque hay mejores formas de manejarlo.
Aritmética en Bash usando corchetes dobles incorporados
como alternativa let
comando, puede usar corchetes dobles Un método que debe incluir el operador y el operando entre paréntesis dobles.
Este método es relativo a let
El comando es que el resultado se puede imprimir directamente o almacenar en una variable, se pueden agregar espacios entre operadores y operandos.Similar a let
comando, no puede realizar ninguna operación de coma flotante.
El ejemplo dado a continuación es el mismo que let
Ordenar. Todo lo que tienes que hacer es poner tu expresión entre corchetes dobles.No es necesario anteponer la variable $
Símbolos entre corchetes dobles. Simplemente dé el nombre de la variable y el valor será interpretado.
En la imagen de abajo, si puede ver las líneas 12 y 13, verá que las expresiones se manejan de manera diferente. Todo lo que esté entre paréntesis se evaluará primero y su resultado se comparará con los demás operandos.Puedes ver este comportamiento en la salida. «tomar» y «Multiplicar por 1».

Similar a let
comando, también puede realizar operaciones posteriores al incremento y decremento.
((NUMBER2++)
((NUMBER1--))
También puede realizar operaciones abreviadas.
(( NUMBER2 = NUMBER2 + 10 ))
(( NUMBER2 += 10 )) # Shorthand

Realice operaciones aritméticas en Bash usando la utilidad Expr
En las secciones anteriores, hemos visto las funciones integradas, en esta sección, veremos «expresión»que es un programa externo.
No solo operaciones matemáticas, la utilidad expr también puede operar en cadenas, como encontrar el índice de un carácter, la longitud de una cadena, una subcadena, etc.
Antes de usar el programa expr, lea la página del manual, que le dará una buena comprensión de la utilidad.
$ man expr
$ expr -help
La siguiente es la sintaxis expr
Ordenar:
$ expr
Las operaciones aritméticas básicas son las mismas que vimos en las secciones anteriores.La única diferencia aquí es cuando se usa * Para hacer la multiplicación tienes que usar «\
« De lo contrario, se lanzará un error.
expr 10 + 3 # Addition
expr 10 - 3 # Subtraction
expr 10 * 3 # Multiply
expr 10 / 3 # Divide
expr 10 % 3 # Remainder

Hasta ahora, hemos visto tres formas diferentes de realizar operaciones aritméticas básicas y de incremento.comparado con let
y expr
Este La forma recomendada es utilizar corchetes dobles..
Lo que estos tres métodos tienen en común es que no pueden manejar operaciones de coma flotante.Tienes que confiar en utilidades externas como awk
y bc
Hacer aritmética de punto flotante.
Use la utilidad bc para realizar operaciones aritméticas de Bash
Este ANTES DE CRISTO. Una utilidad es un programa externo que se puede utilizar para realizar operaciones matemáticas básicas y complejas. También es compatible con la aritmética de punto flotante por la utilidad bc.
Puede ver el tipo de utilidad bc y su página man con el siguiente comando:
$ type -a bc
$ man bc
Los siguientes ejemplos muestran operaciones matemáticas simples con valores enteros y de punto flotante.
# Add $ echo "10 + 100" | bc => 110 $ echo "10.15 + 11.20" | bc 21.35 # Subtract $ echo "100 - 25" | bc => 75 $ echo "100 - 25.5" | bc => 74.5 # Multiply $ echo "10 * 5" | bc => 50 $ echo "10.10 * 4" | bc => 40.40
Al hacer una división, debe configurar el valor de escala del resultado para que se imprima como un valor de punto flotante, de lo contrario, el resultado será un valor entero. El valor establecido en Escala determina cuántos dígitos después del punto decimal se imprimen.
# without scale echo "10.10 / 4" | bc => 2
# with scale
echo "scale=2;10.10 / 4" | bc
=> 2.52
También puedes hacer exponenciación.
$ echo "2.2^4" | bc
=> 23.4
Realizar operaciones matemáticas con AWK
awk En comparación con otras utilidades, proporciona más capacidades de cálculo matemático. Tiene varias características integradas que pueden hacernos la vida más fácil.
A continuación se muestra la sintaxis para realizar cálculos matemáticos.
$ awk "BEGIN {print expression }"
Para realizar una multiplicación simple, ejecute:
$ awk "BEGIN {print 23 * 4.5 }"
=> 103.5
A partir de valores de punto flotante, puede usar valores enteros separados int
Función.
$ awk "BEGIN{print int(10.111) }"
=> 10
También puedes calcular la raíz cuadrada de un número dado usando sqrt
Función.
$ awk "BEGIN{print sqrt(10) }"
=> 3.16228
Especialmente cuando se trata de archivos CSV, a menudo me encuentro con situaciones en las que se calculan los promedios de las columnas. Simplemente puede calcular la media de una columna usando el siguiente código.
Dado que este es un archivo CSV, configuré el separador de campo en (-F «,»). Aquí primero agregue toda la segunda columna y divídala por NR (Número de registros).
$ awk -F "," '{sum+=$2} END { print "average value from column 2 = ",sum/NR}' data.csv
Publicaremos una guía detallada. awk en los días venideros.
En conclusión
En este artículo, le mostré varias formas de realizar operaciones matemáticas simples en Bash. Si está haciendo aritmética muy simple, siga con el enfoque de doble paréntesis, para operaciones más complejas, use awk.