2010-09-03 116 views
7

什麼KSH或bash總結數字的最佳簡單優雅的方式 我的例子是關於我們的命令,但我想找到更好的方式來總結所有號碼shell腳本+數字總和

例如

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

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

回答

17

如何:

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

可以使用$(())語法,但如果你有小數,用awk,或BC/DC做你的數學, 「便攜」。

3

同意ghostdog74。我曾經使用過$(())內置函數,但是我更改爲bc,因爲我們接收數據的格式不是很「數字化」。下面的表查詢:

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

似乎在第一種情況下,它理解爲二進制或十六進制數..不太確定。

所以我改爲bc。您可以選擇至極的方式你喜歡:

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

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

還有其他庫爾斯方式來做到這一點......但如果你發送更多的細節,比如,如果你是這將是很好執行部門也,你需要添加bc -l參數,加載數學庫。

1

如果將雙括號移動到外部,您可以消除最後一個美元符號並自由分隔操作數和運算符(包括變量和賦值運算符)以提高可讀性。

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

((count++)) 

((sum += quantity)) 

,除非你使用let或外(())形式(或你遞增變量或右手邊做任務)不能使用增量風格的操作(*= /= %= += -= <<= >>= &= ^= |= ++ --)。