De vez en cuando necesito hacer algún calculo matemático durante la ejecución de un bash en linux, luego de probar varios métodos me decidí por utilizar el comando bc, que es la implementación de "Un lenguaje de calculo de precisión arbitraria."
la forma mas simple de usarlo es pasando la operación a calcula vi la entrada estándar, por ejemplo para calcula pi:
echo "scale=10; 4*a(1)" | bc -l
3.1415926532
usando la función arco-tangente se calcula pi con 10 decimales, o calcular una simple multiplicación y división
echo "scale=10; 100*12.34/23" | bc -l
53.6521739130
o generar un archivo con los pasos a calcular
scale = 20
/* Uses the fact that e^x = (e^(x/2))^2
When x is small enough, we use the series:
e^x = 1 + x + x^2/2! + x^3/3! + ...
*/
define e(x) {
auto a, d, e, f, i, m, v, z
/* Check the sign of x. */
if (x<0) {
m = 1
x = -x
}
/* Precondition x. */
z = scale;
scale = 4 + z + .44*x;
while (x > 1) {
f += 1;
x /= 2;
}
/* Initialize the variables. */
v = 1+x
a = x
d = 1
for (i=2; 1; i++) {
e = (a *= x) / (d *= i)
if (e == 0) {
if (f>0) while (f--) v = v*v;
scale = z
if (m) return (1/v);
return (v/1);
}
v += e
}
}
bc permite expresiones, loop como for, while o funciones conficionales como if
NOTA: scale indica la precisión del calculo
Espero que les sea util
Mostrando las entradas con la etiqueta bash. Mostrar todas las entradas
Mostrando las entradas con la etiqueta bash. Mostrar todas las entradas
sábado, 9 de marzo de 2019
sábado, 13 de agosto de 2016
Aritmética en bash
Cada cierto tiempo en los script en bash necesito implementar un contador, sumar dos números o realizar alguna operación aritmética, buscando descubrí que existe una forma sencilla de realizar estas operaciones dentro de un script bash, con el siguiente formato:
$((expresión aritmética))Ejemplos
$(( 2 + 3 )) $(( x *3 )) $(( 2 / 3 ))Esto puede realizar tanto con variables que contengan un número como con constantes o números, un ejemplo básico de un script seria:
#!/bin/bash x=15 y=10 suma=$(( x + y )) echo "$x + $y = $suma"Al ejecutar entregaría
15 + 10 = 25Operaciones con Enteros
Operador
|
Descripción
|
Ejemplo
|
Valor
|
+
|
Adición (suma)
|
echo $(( 20 + 15 ))
|
35
|
-
|
Sustracción (resta)
|
echo $(( 20 - 7 ))
|
13
|
/
|
División
|
echo $(( 20 / 4 ))
|
5
|
*
|
Multiplicación
|
echo $(( 20 * 3 ))
|
60
|
%
|
Modulo
|
echo $(( 20 % 6 ))
|
2
|
++
|
post-incremento (agrega 1 a la variable)
|
x=4
echo $(( x++ )) echo $(( x++ )) |
4
5 |
--
|
post-decremento (resta 1 a la variable)
|
x=7
echo $(( x-- ))
echo $(( x-- ))
|
7
6
|
**
|
Exponencial
|
x=2
y=3 echo $(( x ** y )) |
8
|
Suscribirse a:
Entradas (Atom)
Instalación rapida de kvm manager de oracle
Para instalar kvm manager de oracle se deben seguir los siguientes pasos: Instalar Oracle Linux 7 configurar el fqdn en el archivo /etc/hos...
-
aveces es necesario aumentar el tamaño de un tablespcae, agrandando el datafile que lo compone, para esto existe 2 formas bien conocidas: ...
-
Un cliente tiene una consola de monitoreo en un windows 10, la cual tiene acceso a todas las redes. Un día necesita tomar por escritorio rem...