Linux shell 指令碼中變數的數學計算

來源:互聯網
上載者:User

首先從一個例子說起:

x=1+1echo $x

你是不是期待著輸出2啊?讓你失望了,這樣輸出的結果是1+1。為什麼呢?這是因為在shell script中變數類型預設為“字串”,所以若不指定變數類型,1+1是一個“字串”而不是“計算式”。那麼怎麼得到我們想要的結果呢?方法很多,但是總結起來就是兩種,一種就是生命變數的類型。另一種是對特定的計算式進行處理。

1)首先看第一類方法:聲明變數的類型

我對上述程式做出以下修改:

declare -i xx=1+1echo $x

在上述指令碼中我把x聲明為整型數字(integer)類型,這時輸出結果為2

或者你可以這麼寫:

declare -i xdeclare -i yx=1y=2x=$x+$yecho $x

輸出結果為3,假如我沒有聲明 x, y 的類型為整型數字,那麼輸出結果是1+2

2)

a)使用let命令:(注意的是let僅支援整數運算)

let 'x=1+1'echo $x

這時輸出結果為2

b)使用$[ ]

x=1y=2x=$[ x+y]echo $x

輸出結果為:3

這裡要注意的是注意: 

  • $[]將中括弧內的運算式作為數學運算先計算結果再輸出 
  • 對$[]中的變數進行訪問時加不加$無所謂 
  • $[]支援的運算子與let相同,但也只支援整數運算 

c)使用$(( ))

x=1y=2x=$(( x+y))echo $x

輸出結果是3


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.