Cómo hacer cálculos decimales en BASH usando BC

Cómo hacer cálculos decimales en BASH usando BC

A veces se requieren cálculos decimales en Bash. El idioma de programación de bash de cálculo estándar ($ []) no puede proporcionar una salida decimal. Mientras que podemos engañarlo para calcular (pero no generar) una salida decimal multiplicando los números, por ejemplo, un factor de 1000 y luego haciendo una división basada en texto, este es una solución fea y crea un código complejo. Sin embargo, hay una utilidad en Bash que puede hacer de manera nativa los cálculos basados ​​en decimales sin ningún truco o solución!

En este tutorial aprenderás:

  • Cómo usar BC para realizar cálculos decimales
  • Cómo hacer cálculos basados ​​en decimales en la línea de comandos Bash o desde sus scripts
  • Cómo usar variables para almacenar los resultados producidos por BC
  • Cómo usar variables en cálculos adicionales
  • Cómo evitar los errores de cotización de la variable Bash
Cómo hacer cálculos decimales en BASH usando BC

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Independiente de la distribución de Linux
Software Línea de comando bash, sistema basado en Linux
Otro Cualquier utilidad que no esté incluida en el shell bash de forma predeterminada se puede instalar utilizando sudo apt-get instalación de utilidad de utilidad (o yum instalación para sistemas basados ​​en redhat)
Convenciones # - requiere que los comandos de Linux se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$-Requiere que los comandos de Linux se ejecuten como un usuario regular no privilegiado

Instalación de BC

Para instalar BC en Ubuntu, Mint o cualquier otro sistema operativo basado en Debian/APT, escriba:

$ sudo apt instalación bc 


Para instalar BC en Fedora, Redhat o cualquier otro sistema operativo basado en Redhat/Yum, escriba:

$ sudo yum instalación bc 

Cálculos BASH predeterminados

Podemos hacer un problema de división simple directamente en Bash:

$ Echo $ [13/4] 3 

Esto intenta y divide 13 por 4 usando el idioma de la bash estándar $ [Cálculo]. Mientras que esto es bastante versátil:

$ echo "1+1? La respuesta es: $ [1 + 1] "1 + 1? La respuesta es: 2 

Lamentablemente no puede emitir decimales. Las soluciones de este problema son complejas y feas como se describió anteriormente.

BC al rescate

Una solución más elegante es usar antes de Cristo para cálculos.

Mientras que BC también se puede usar para los mismos cálculos que ya sea posible en Bash:

$ Echo '13 / 4 '| BC 3 


También es capaz de producir resultados basados ​​en decimales utilizando el -l (-l Define la biblioteca de matemáticas estándar) opción para antes de Cristo:

$ Echo '13 / 4 '| BC -L 3.2500000000000000000000 

Almacenar resultados como variables

También podemos almacenar el resultado como una variable utilizando una subshell:

$ Resultado = $ (echo '13/4 '| bc -l) $ echo $ resultado 3.2500000000000000000000 

Aquí usamos el mismo cálculo que en el último ejemplo, pero usamos una subshell ps Para hacer el cálculo. Esto nos permite almacenar el resultado en una variable fácilmente. Ahora podemos usar esta variable más en otros cálculos, o simplemente generar el resultado como se muestra arriba. Para usarlo en otro cálculo, puede:

$ echo "$ resultado * 4" | BC -L 13.0000000000000000000000 

Tenga en cuenta cómo utilizamos cotizaciones dobles esta vez para definir nuestra aritmética. La razón de esto es que queremos el $ Resultado variable para ser sustituido por su valor real. Si hubiéramos usado citas individuales (') En cambio, la operación habría fallado ya que el nombre de la variable se habría tomado como una entrada literal. En otras palabras, ninguna sustitución de su valor habría sucedido, como podemos ver desde la siguiente salida:

$ echo '$ resultado * 4' | BC -L (Standard_in) 1: Carácter ilegal: $ (Standard_in) 1: Error de sintaxis 

Listo para aprender más Bash? Explore nuestra útil serie de consejos y trucos de la línea de comandos Bash!

Conclusión

En este artículo, exploramos cómo hacer cálculos basados ​​en decimales con antes de Cristo en la línea de comando. Los mismos comandos funcionan bien cuando se usan desde un script de shell. También observamos las deficiencias del uso de modismos de cálculo de bash estándar, así como el uso de variables en combinación con antes de Cristo Usando subshells. Finalmente descubrimos lo que sucede si uno cita incorrectamente variables en Bash.

Tutoriales de Linux relacionados:

  • Ubuntu 20.04 trucos y cosas que quizás no sepas
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 3
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 1
  • Bash Avanzado Variable Idióms para la sensibilidad de los casos ..
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 4
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 2
  • Ejemplos de consejos y trucos de comandos de comandos útiles - Parte 5
  • Cómo persistir los datos a PostgreSQL en Java
  • Gestión de procesos de fondo bash
  • Conceptos básicos de matemáticas de la computadora: binaria, decimal, hexadecimal, octal