2010-03-02 11 views

Respuesta

9

fiesta no admite el uso flotadores, awk o ac/dc

por ejemplo awk

totalmark=$(awk 'BEGIN{print $sum/$subjects}') 

o BC

totalmark=$(echo "scale=2;$sum/$subjects"|bc) 

si usted tiene el lujo de utilizar diferentes conchas distintos bash, prueba zsh o ksh

$ zsh -c 'echo $((4/1.3))' 
3.0769230769230766 

$ ksh -c 'echo $((4/1.3))' 
3.07692307692307692 
+0

No te olvides de 'perl -e' ... –

+1

y' python -c' y 'php -r' y .... – ghostdog74

+0

@ghostdog: punto justo, pero ¿quién tiene php instalado en su cliente? Bueno, de hecho, sí veo que está instalado por defecto en Mac OS; Estoy seguro de que Apple tiene sus razones ... –

5

No creo que bash tenga capacidades de coma flotante. Puede intentarlo:

echo "$sum/$subjects" | bc -l 
3

Bash no es compatible con la aritmética de coma flotante. Pruebe bc en su lugar.

2
totalmark=$(echo "scale=4;$sum/$subjects"|bc) 

Por cierto, tres respuestas dicen que Bash no es compatible con la aritmética de punto flotante. Si bien es cierto, expr es un programa externo (/usr/bin/expr para mí) y es el que, en particular, en este caso no admite flotadores.

+0

El GNU 'bc' tiene 'scale = 0' por defecto, lo que presumiblemente la Q no quiere. Pase las opciones '-lq'. –

+0

@Charles: Es por eso que especifiqué una escala de 4. Podría ser cualquier cosa que desee. La opción '--mathlib' (' -l') proporciona un valor predeterminado de 'scale = 20' (al menos en mi sistema con bc 1.06.94). La opción '--quiet' es una buena idea, sin embargo. –

+0

Lo siento: no había notado que había pasado la tarea en la entrada - Debí haber estado soñando despierto. 'scale = 20' es una exageración despiadada, pero la información deseada está allí, y tiendo a preferir el ruido en la salida al ruido en el script de shell. –

Cuestiones relacionadas