Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: H4RR13R en 26 Septiembre 2015, 22:46 pm



Título: Imposibilidad de efectuar cálculos aritméticos realmente simples con shellscript
Publicado por: H4RR13R en 26 Septiembre 2015, 22:46 pm
Muy Buenas gente,

Este artículo pensaréis que no tiene ningún sentido, pero después de años programando en varios lenguajes, hoy me he encontrado una sorprendente barrera: No hay manera natural de hacer operaciones simples y obtener valores decimales en un archivo .sh

¿Os sorprende?

a = 3/2 //o bien 3.0/2

Hacer cosas como esta, aparentemente tan simples, me resulta chocantemente imposible, por más que busque ejemplos en internet, no tengo narices de hacer medias de cálculos obteniendo números de formato flotante, además de que absolutamente todo me da un error de sintaxis, intente lo que intente.

Alguien me podría ayudar a hacer algo como esto?

media = (a+b+c)/3

os lo agradecería eternamente, un saludo.


Título: Re: Imposibilidad de efectuar cálculos aritméticos realmente simples con shellscript
Publicado por: explorer en 26 Septiembre 2015, 23:41 pm
Con shell, no puedes. Bash solo entiende aritmética entera.

Debes usar el comando bc para esas operaciones. Por ejemplo (desde la línea de comandos o en un script):

Código:
bc -l <<< '(2+4+7)/3'
Sale:
4.33333333333333333333

En un script puedes guardar el resultado en una variable, así:
Código:
a=$(bc -l <<< '(8+4+7)/3')
echo $a
O así:
Código:
b=$(echo '(8+4+7)/3' | bc -l)

Si el programa empieza a hacerse largo, es mejor usar algo con más potencia, como un Perl, Python, Ruby, javascript, etc.

Otra opción es usar zsh o ksh.


Título: Re: Imposibilidad de efectuar cálculos aritméticos realmente simples con shellscript
Publicado por: H4RR13R en 11 Octubre 2015, 05:40 am
Muchas gracias por tu respuesta, me sirvió de ayuda, al tener el tema aparcado y retomarlo, pude solucionar el problema.

Un saludo!