Imposibilidad de efectuar cálculos aritméticos realmente simples con shellscript

Iniciado por H4RR13R, 26 Septiembre 2015, 22:46 PM

0 Miembros y 1 Visitante están viendo este tema.

H4RR13R

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.

mi frase: Un hacker no dice lo que sabe un lammer no sabe lo que dice

explorer

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):

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

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

O así:
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.

H4RR13R

Muchas gracias por tu respuesta, me sirvió de ayuda, al tener el tema aparcado y retomarlo, pude solucionar el problema.

Un saludo!

mi frase: Un hacker no dice lo que sabe un lammer no sabe lo que dice