Linux shell 腳本中變量的數學計算

首先從一個例子說起:

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章