tags:

views:

52

answers:

4

hi friends

what the best simple elegant way to sum number in ksh or bash my example is about let command , but I want to find better way to summary all numbers

for example

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

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

How about:

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

you can use $(()) syntax, but if you have decimal numbers, use awk, or bc/dc to do your maths, "portably".

ghostdog74
+1  A: 

Agree with ghostdog74. I once used $(( )) built-in function, but I changed to bc because the format the we receive data is not very "number-formated". Check below:

jyzuz@dev:/tmp> echo $(( 017 + 2 ))
17
jyzuz@dev:/tmp> echo $(( 17 + 2 ))
19
jyzuz@dev:/tmp>

Seems that in the 1st case it understands as binary or hex numbers.. not very sure.

So I changed to bc. You can choose wich way you prefer:

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

or

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

There are other cools ways to do this...but it would be good if you send more details, like if you're performing division also, you'll need to add bc -l argument, to load math lib.

jyzuz
A: 

You can eliminate the last dollar sign and freely space the operands and operators (including the variable and the assignment operator) for readability if you move the double parentheses all the way to the outside.

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

(( count++ ))

(( sum += quantity ))

You can't use the increment style operators (*= /= %= += -= <<= >>= &= ^= |= ++ --) unless you use let or the outside (()) form (or you're incrementing variables or making assignments on the right hand side).

Dennis Williamson