Tutoriales

Cómo realizar operaciones aritméticas en Bash

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:

Mostrar la sección de ayuda del comando let

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}"
Hacer matemáticas en el script Bash
Hacer matemáticas en el script Bash

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--
Realizar operaciones post-incremento y post-decremento
Realizar operaciones post-incremento y post-decremento

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».

Uso de corchetes dobles para realizar operaciones aritméticas en scripts Bash
Uso de corchetes dobles para realizar operaciones aritméticas en scripts Bash

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
Realizar operaciones posteriores al incremento y decremento
Realizar operaciones posteriores al incremento y decremento

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
Realice operaciones aritméticas en Bash usando la utilidad Expr
Realice operaciones aritméticas en Bash usando la utilidad Expr

Hasta ahora, hemos visto tres formas diferentes de realizar operaciones aritméticas básicas y de incremento.comparado con let y exprEste 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.

LEER  La actualización de aplicaciones de KDE para febrero de 2021 presenta Kongress, una nueva aplicación de horarios de conferencias

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba