本文轉載自:http://blog.csdn.net/qinghezhen/article/details/9194287
首先從一個例子說起:
- x=1+1
- echo $x
你是不是期待着輸出2啊?讓你失望了,這樣輸出的結果是1+1。為什么呢?
這是因為在shell script中變量類型默認為“字符串”,所以若不指定變量類型,1+1是一個“字符串”而不是“計算式”。
那么怎么得到我們想要的結果呢?
方法很多,但是總結起來就是兩種,一種就是生命變量的類型。另一種是對特定的計算式進行處理。
1)首先看第一類方法:聲明變量的類型
我對上述程序做出以下修改:
- declare -i x
- x=1+1
- echo $x
在上述腳本中我把x聲明為整型數字(integer)類型,這時輸出結果為2
或者你可以這么寫:
- declare -i x
- declare -i y
- x=1
- y=2
- x=$x+$y
- echo $x
輸出結果為3,假如我沒有聲明 x, y 的類型為整型數字,那么輸出結果是1+2
2)
a)使用let命令:(注意的是let僅支持整數運算)
- let 'x=1+1'
- echo $x
這時輸出結果為2
b)使用$[ ]
- x=1
- y=2
- x=$[ x+y]
- echo $x
輸出結果為:3
這里要注意的是注意:
- $[]將中括號內的表達式作為數學運算先計算結果再輸出
- 對$[]中的變量進行訪問時加不加$無所謂
- $[]支持的運算符與let相同,但也只支持整數運算
c)使用$(( ))
- x=1
- y=2
- x=$(( x+y))
- echo $x
輸出結果是3