2010-09-03 46 views
7

cuál es la mejor manera elegante simple de resumir número en ksh o fiesta mi ejemplo se acerca dejar el mando, pero quiero encontrar una mejor manera de resumen de todos los númerosshell script + números de suma

por ejemplo

num1=1232 
num2=24 
num3=444 
. 
. 
. 

let SUM=$num1+num2+num3......... 

Respuesta

17

¿Qué tal:

num1=1232 
num2=24 
num3=444 
sum=$((num1+num2+num3)) 
echo $sum # prints 1700 
0

puede utilizar $(()) sintaxis, pero si usted tiene los números decimales, el uso de awk, o ac/dc hacer tus cuentas, "portable".

3

De acuerdo con ghostdog74. Una vez usé $ (()) función incorporada, pero cambié a bc porque el formato en el que recibimos los datos no es muy "formateado en números". Compruebe a continuación:

[email protected]:/tmp> echo $((017 + 2)) 
17 
[email protected]:/tmp> echo $((17 + 2)) 
19 
[email protected]:/tmp> 

parece que en el primero caso se entiende con números binarios o hexagonales .. no es muy seguro.

Así que cambié a bc. Usted puede elegir la manera wich que prefiera:

bc << EOF 
$num1 + $num2 + $num3 
EOF 

o

bc <<< "$num1 + $num2 + $num3" 

Hay otras maneras se enfríe a hacer esto ... pero sería bueno si envía más detalles, como si estás Al realizar la división también, deberá agregar el argumento bc -l para cargar math lib.

1

Puede eliminar el último signo de dólar y espaciar libremente los operandos y operadores (incluida la variable y el operador de asignación) para facilitar la lectura si mueve los paréntesis dobles hacia afuera.

num1=1232 
num2=24 
num3=444 
((sum = num1 + num2 + num3)) 

((count++)) 

((sum += quantity)) 

no puede utilizar los operadores de incremento (estilo *= /= %= += -= <<= >>= &= ^= |= ++ --) a menos que utilice let o la forma exterior (()) (o que está incrementando las variables o hacer asignaciones en el lado derecho).