开发者

shell script + numbers sum

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
.
.
开发者_如何学Go.

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


How about:

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


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.


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


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜