En este breve artículo voy a demostrar cómo realizar cálculos matemáticos simples utilizando bc en GNU/Linux. Este utilitario puede ser de gran utilidad para salir del paso y realizar cuentas rápidas desde línea de comandos (sin necesidad de abrir aplicaciones gráficas como KCalc u otras). Pero mejor aún cuando se necesita realizar algún cálculo aritmético desde un script Bash.

bc es un lenguaje que soporta cálculos interactivos desde línea de comandos o archivos, utilizando números de precisión arbitraria. Cuando se utiliza de manera interactiva, bc procesa las sentencias de a una línea por vez.

En los sistemas FreeBSD, bc está incluido como parte del sistema base, con lo cual no es necesario instalarlo. En los sistemas GNU/Linux basados en Debian se instala de manera simple ejecutando apt-get install bc. En CentOS y derivados mediante yum install bc.

Los símbolos que utiliza bc para los operadores más comunes son los siguientes:

  • + suma
  • - resta
  • * multiplicación
  • / división
  • % resto o módulo
  • ^ potencia

Además bc permite utilizar paréntesis para anidar operaciones y punto (.) para la coma decimal.

bc también permite definir y asignar valores a variables; evaluar expresiones booleanas; definir sentencias de control como if, while, for y otras; crear funciones; y más (para mayor información revisar su página de manual).

A continuación, veamos algunos ejemplos simples.

Al lanzar bc, se muestra un breve disclaimer y se queda esperando por sentencias a evaluar:

root@linuxito:~# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 

En modo interactivo bc evalúa de a una línea por vez, con lo cual se debe ingresar una expresión aritmética y luego presionar enter:>/p>

5*3
15

La siguiente línea es el resultado de la expresión ingresada (en caso de haber alguno).

Se debe utilizar punto para expresar la coma decimal:

5.46 + 1.029*2
7.518

Además es posible utilizar cualquier número de espacios en blanco.

El uso de paréntesis es extremadamente intuitivo:

(5.46+1.029)*2
12.978

Es posible definir variables con asignaciones simples (=) como en cualquier lenguaje de programación:

pepe=4

Y luego utilizar las variables para cualquier otro cálculo:

pepe+6
10

Lo más interesante sin embargo (al menos para un SysAdmin), es la posibilidad de utilizar un pipe para enviar la salida de un comando a bc:

[root@centos6]# echo "10 / 3" | bc
3

Si se desea obtener resultados en el conjunto real, se debe invocar a bc con la opción -l:

[root@centos6]# echo "10 / 3" | bc
3.33333333333333333333

La cantidad de dígitos decimales por defecto es 20, si se desea modificar, es necesario recurrir a la variable especial scale, por ejemplo:

[root@centos6]# echo -e "scale=2\n10 / 3" | bc -l
3.33

Es posible reemplazar los saltos de línea por punto y coma (;):

[root@centos6]# echo "scale=2; 10 / 3" | bc -l
3.33

Referencias

man bc


Tal vez pueda interesarte


Compartí este artículo