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.
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.
Muchas gracias por tu respuesta, me sirvió de ayuda, al tener el tema aparcado y retomarlo, pude solucionar el problema.
Un saludo!