Linux Shell之四 算術運算

來源:互聯網
上載者:User

標籤:shell   linux   變數   算術式   

在Bash的算術運算中有以下幾種方法:
名稱                文法                    範例
算術擴充            $((算術式))              r=$((1+2*3))
使用外部程式expr    expr 算術式              r=`expr 1+2*3`
使用$[]             $[算術式]                r=$[1+2]
使用內建命令        declare -i 變數=算術式    declare -i r=1+2*3
使用內建命令let     let 算術式                let r=1+2


i++運算後加1,i--運算後減1
++i運算前加1,--i運算前減1

一、算術擴充
算術擴充的文法是:$((運算式)),如果運算式中有變數,該變數之前最好不要加$這個符號,以免變數不存在造成語法錯誤,例:
unset i
echo $((2+$i))
由於變數i不存在,所以會變成 echo $((2+)),這樣文法就錯誤了。
但如果寫成echo $((2+i)),((2+i))是一個合法的算術式,就算變數不存在,仍可正確計算。

a=5
a=$((++1)) a的值加1後,在賦值給a
a=$((--1)) a的值減1後,在賦值給a
a=$((3+a--))運算後減1
二、使用外部程式expr做算術運算
外部程式expr本來的作用,是在“標準輸出”顯示運算式的值。這個是外部程式,和Shell沒有關係,所以移植性非常好,
如果注重跨平台,那麼可以在指令碼本使用expr代替其他算術運算式。

expr 3 + 4  
它會在螢幕上顯示7,注意"+"兩邊有空格。
在使用expr時,要特別"運算式"中是否包含shell的特殊字元,如*、|、<、>、!、&、(、),要使用"\"來轉義。
1、r=`expr 參數1 \|參數2`
|代表"或"之意.如果”參數1“存在、非空、不是0,則傳回”參數1“的值,否則傳回"參數2"的值。
r=`expr 3 \| 0` r的值為3
r=`expr 0 \| 2` r的值為2
2、r=`expr 參數1 \&參數2`
如果"參數1"和"參數2"都存在、非空、不是0,則傳回"參數1"的值,否則傳回0.
r=`expr 3 \& 0` r的值為0
3、比較
算術            是否成立    r的值
r=`expr 1 \< 2`      是        1
r=`expr 3 \<= 2`     否        0
r=`expr 2 \= 2`      是        1
r=`expr 3 \!= 2`     是        1
r=`expr 3 \>= 2`     是        1
r=`expr 3 \> 2`      是        1
4、加
r=`expr 4 + 5` r的值為9
5、減
r=`expr 3 - 5` r的值為-2
6、乘
r=`expr 3 \* 5` r的值為15
7、除
r=`expr 32 / 5` r的值為6(餘數無條件捨去)
8、乘方
expr沒有乘方的功能
9、求餘數
r=`expr 32 % 5` r的值為2
10、計算字串長度
r=`expr length "hello"`  r的值為5
三、用$[]做算術運算
使用$[]做算術運算和$(())類似
加:r=$[4+5]    r的值為9
減:r=$[4-5]    r的值為-1
乘:r=$[4*5]    r的值為20
除:r=$[5/2]    r的值為2
餘數:r=$[5%2]  r的值為1
乘方:r=$[2**3] r的值為8

四、使用declare、let做算術運算
declare為bash shell的內建命令。
declare -i I
I=5+4
echo $I
因為I事先被定義為整數(算術運算),所以$I的值為9,而不再是字串5+4
當被定義為整數後,便可以進行加、減、乘、除..等操作
五、用let做算術運算

let為bash shell的內建命令。

let I=8+4*5
echo $I
此時輸出的值為28
let表明後邊的直接說一個算術式。
也可使用空格符讓運算式可讀性高一點,但這時必須使用引號包括運算式才行。
let "i = i + 5"

本文出自 “Welcome To Linux World” 部落格,請務必保留此出處http://linuxnote.blog.51cto.com/9876511/1641189

Linux Shell之四 算術運算

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.