Cómo usar la calculadora BC en scripts

El programa Linux bc se puede usar como una calculadora de escritorio conveniente o como un lenguaje matemático de secuencias de comandos. Es tan fácil como llamar al comando bc a través de un terminal.

El programa Linux bc se puede usar como una calculadora de escritorio conveniente o como un lenguaje matemático de secuencias de comandos. Es tan fácil como llamar al comando bc a través de un terminal.

Además de la utilidad bc, el shell Bash proporciona algunos otros métodos para realizar operaciones aritméticas.

El programa bc también se llama calculadora básica o calculadora de banco.

Sintaxis del comando BC

La sintaxis para el comando bc es similar al lenguaje de programación C, y se admite una variedad de operadores, como suma, resta, más o menos, y más.

Estos son los diversos interruptores disponibles con el comando bc:

  • -h, –help: imprime este uso y sale.
  • -i, –interactivo: fuerza el modo interactivo.
  • -l, –mathlib: utiliza las rutinas matemáticas predefinidas.
  • -q, –quiet: no imprime el banner inicial.
  • -s, –standard: las construcciones bc no estándar son errores.
  • -w, –warn: advierte sobre construcciones bc no estándar.
  • -v, –version: imprime información de versión y sale.

Consulte este Manual de comandos de bc para obtener más detalles sobre cómo puede usar la calculadora básica.

Ejemplo de comando BC

La calculadora básica se puede usar en una terminal simplemente ingresando bc , después de lo cual puede escribir expresiones matemáticas regulares como esta:

  4 + 3  

… para obtener un resultado como este:

 7 

Al realizar una serie de cálculos repetidamente, tiene sentido usar la calculadora bc como parte de un script. La forma más simple de tal script se vería así:

  #!/bin/bash  
echo '6.5/2.7' | bc

La primera línea es solo la ruta del ejecutable que ejecuta este script.

La segunda línea contiene dos comandos. El comando echo genera una cadena que contiene la expresión matemática contenida entre comillas simples (6.5 dividido por 2.7, en este ejemplo). El operador de canalización (|) pasa esta cadena como argumento al programa bc. La salida del programa bc se muestra en la línea de comando.

Para ejecutar este script, abra una ventana de terminal y navegue hasta el directorio donde se encuentra el script. Asumiremos que el archivo de script se llama bc_script.sh . Asegúrese de que el archivo sea ejecutable con el comando chmod:

  chmod 755 bc_script.sh  

Entonces ingresarías:

  ./bc_script.sh  

El resultado sería el siguiente:

 2 

Para mostrar 3 lugares decimales ya que la respuesta verdadera es 2.407407 …, use una declaración de escala dentro de la cadena delimitada por las comillas simples:

  #!/bin/bash  
echo 'scale = 3; 6.5/2.7 '| bc

Para una mejor legibilidad, la línea con los cálculos se puede reescribir en varias líneas. Para dividir la línea de comando en varias líneas, puede colocar una barra diagonal inversa al final de la línea:

  echo 'scale = 3;  
var1 = 6.5/2.7;
var1 '\
| bc

Para incluir argumentos de línea de comando en sus cálculos de bc, debe cambiar las comillas simples en comillas dobles para que el shell de Bash interprete los símbolos de los parámetros de la línea de comandos:

  echo "scale = 3;  
var1 = 6.5/2.7;
var2 = 14 * var1;
var2 * = $ 1;
var2 "\
| bc

Se accede al primer argumento de la línea de comando usando la variable «$ 1», el segundo argumento usa «$ 2», etc.

Ahora puede escribir sus propias funciones aritméticas personalizadas en scripts Bash separados y llamarlos desde otros scripts.

Por ejemplo, si script1 contiene:

  #!/bin/bash  
echo "scale = 3;
var1 = 6.5/2.7;
var2 = 14 * var1;
var2 * = $ 1;
var2 "\
| bc

… y script2 contiene

  #!/bin/bash  
var0 = "100"
echo "var0: $ var0"
función fun1

echo "scale = 3;
var1 = 10;
var2 = var1 * $ var0;
var2 "\

fres = $ (fun1)
echo "fres:" $ fres
var10 = $ (./ script1 $ fres);
echo "var10:" $ var10;

… luego de ejecutar script2 invocará script1 usando una variable $ fres calculada en script2 como parámetro.

Rate article
labsfabs.com
Add a comment