Bash中執行算術運算有很多種實現方式,下面總結如下:
- Bash內建的let命令
let varName=expr 舉例:
n1=3 n2=4 let sum=n1+n2 n3=2 n4=10 n5=5 let n1++ let n2+=4 let sum=\(\(n1+n2\)*n5\)*(n4-n3)表達式中有括號的,要對括號進行轉義,尤其是表達式中運算操作符右邊的括號!
- $[expr]
varName=$[expr] 舉例:
n1=3 n2=4 sum=$[n1+n2] n3=2 n4=10 n5=5 sum=$[((n1+n2)*n5)*(n4-n3)]
- $((expr))
varName=$((expr)) 舉例:
n1=3 n2=4 sum=$((n1+n2)) n3=2 n4=10 n5=5 sum=$((((n1+n2)*n5)*(n4-n3)))
- expr命令
expr EXPRESSION ,其中EXPRESSION可以是 n1 + n2, n1 – n2, n1 > n2, n1 = n2等等,詳細信息可以man expr命令。特別注意的是EXPRESSION中各運算參數和運算操作符之間都要有空格隔開,而且運算參數以值引用的方式出現。例:
n1=3 n2=4 sum=`expr n1 + n2`另外,expr命令在算術運算方面似乎不支持使用括號的複雜的算術表達式,只支持二元運算.
- ((expr))
舉例:
n1=3 n2=4 ((sum=n1+n2)) n3=2 n4=10 n5=5 ((sum=((n1+n2)*n5)*(n4-n3)))
以上算術運算中,對運算表達式中的變量參數,可以直接使用變量參數,也可以以引用的方式,即 var 等同於 $var。賦值表達式中的被賦值變量除外。例:
let sum=num1+num2 等同於 let sum=$num1+$num2
sum=$[num1+num2] 等同於 sum=$[$num1+$num2]
sum=$((num1+num2)) 等同於 sum=$(($num1+$num2))
((sum=num1+num2)) 等同於 ((sum=$num1+$num2))
另外,以上所有算術運算實現方式,都不支持浮點精度運算,只支持整型運算。