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
Fuente: linuxito