運(yùn)算操作符/運(yùn)算命令 | 說明 |
---|---|
((a=10+66) ((b=a-15)) ((c=a+b)) |
這種寫法可以在計(jì)算完成后給變量賦值。以 ((b=a-15)) 為例,即將 a-15 的運(yùn)算結(jié)果賦值給變量 c。 注意,使用變量時(shí)不用加$前綴,(( )) 會(huì)自動(dòng)解析變量名。 |
a=$((10+66) b=$((a-15)) c=$((a+b)) |
可以在 (( )) 前面加上$符號(hào)獲取 (( )) 命令的執(zhí)行結(jié)果,也即獲取整個(gè)表達(dá)式的值。以 c=$((a+b)) 為例,即將 a+b 這個(gè)表達(dá)式的運(yùn)算結(jié)果賦值給變量 c。 注意,類似 c=((a+b)) 這樣的寫法是錯(cuò)誤的,不加$就不能取得表達(dá)式的結(jié)果。 |
((a>7 b==c)) | (( )) 也可以進(jìn)行邏輯運(yùn)算,在 if 語句中常會(huì)使用邏輯運(yùn)算。 |
echo $((a+10)) | 需要立即輸出表達(dá)式的運(yùn)算結(jié)果時(shí),可以在 (( )) 前面加$符號(hào)。 |
((a=3+5, b=a+10)) | 對(duì)多個(gè)表達(dá)式同時(shí)進(jìn)行計(jì)算。 |
在 (( )) 中使用變量無需加上$前綴,(( )) 會(huì)自動(dòng)解析變量名,這使得代碼更加簡(jiǎn)潔,也符合程序員的書寫習(xí)慣。
【實(shí)例1】利用 (( )) 進(jìn)行簡(jiǎn)單的數(shù)值計(jì)算。
[jb51.net]$ echo $((1+1)) 2 [jb51.net]$ echo $((6-3)) 3 [jb51.net]$ i=5 [jb51.net]$ ((i=i*2)) #可以簡(jiǎn)寫為 ((i*=2))。 [jb51.net]$ echo $i #使用 echo 輸出變量結(jié)果時(shí)要加 $。 10
【實(shí)例2】用 (( )) 進(jìn)行稍微復(fù)雜一些的綜合算術(shù)運(yùn)算。
[jb51.net]$ ((a=1+2**3-4%3)) [c.biancheng.net]$ echo $a 8 [jb51.net]$ b=$((1+2**3-4%3)) #運(yùn)算后將結(jié)果賦值給變量,變量放在了括號(hào)的外面。 [jb51.net]$ echo $b 8 [jb51.net]$ echo $((1+2**3-4%3)) #也可以直接將表達(dá)式的結(jié)果輸出,注意不要丟掉 $ 符號(hào)。 8 [jb51.net]$ a=$((100*(100+1)/2)) #利用公式計(jì)算1+2+3+...+100的和。 [jb51.net]$ echo $a 5050 [jb51.net]$ echo $((100*(100+1)/2)) #也可以直接輸出表達(dá)式的結(jié)果。 5050
【實(shí)例3】利用 (( )) 進(jìn)行邏輯運(yùn)算。
[jb51.net]$ echo $((38)) #38 的結(jié)果是成立的,因此,輸出了 1,1 表示真 1 [jb51.net]$ echo $((83)) #83 的結(jié)果是不成立的,因此,輸出了 0,0 表示假。 0 [jb51.net]$ echo $((8==8)) #判斷是否相等。 1 [jb51.net]$ if ((8>75==5)) > then > echo yes > fi yes
最后是一個(gè)簡(jiǎn)單的 if 語句的格式,它的意思是,如果 8>7 成立,并且 5==5 成立,那么輸出 yes。顯然,這兩個(gè)條件都是成立的,所以輸出了 yes。
【實(shí)例4】利用 (( )) 進(jìn)行自增(++)和自減(--)運(yùn)算。
[jb51.net]$ a=10 [jb51.net]$ echo $((a++)) #如果++在a的后面,那么在輸出整個(gè)表達(dá)式時(shí),會(huì)輸出a的值,因?yàn)閍為10,所以表達(dá)式的值為10。 10 [jb51.net]$ echo $a #執(zhí)行上面的表達(dá)式后,因?yàn)橛衋++,因此a會(huì)自增1,因此輸出a的值為11。 11 [jb51.net]$ a=11 [jb51.net]$ echo $((a--)) #如果--在a的后面,那么在輸出整個(gè)表達(dá)式時(shí),會(huì)輸出a的值,因?yàn)閍為11,所以表達(dá)式的值的為11。 11 [jb51.net]$ echo $a #執(zhí)行上面的表達(dá)式后,因?yàn)橛衋--,因此a會(huì)自動(dòng)減1,因此a為10。 10 [jb51.net]$ a=10 [jb51.net]$ echo $((--a)) #如果--在a的前面,那么在輸出整個(gè)表達(dá)式時(shí),先進(jìn)行自增或自減計(jì)算,因?yàn)閍為10,且要自減,所以表達(dá)式的值為9。 9 [jb51.net]$ echo $a #執(zhí)行上面的表達(dá)式后,a自減1,因此a為9。 9 [jb51.net]$ echo $((++a)) #如果++在a的前面,輸出整個(gè)表達(dá)式時(shí),先進(jìn)行自增或自減計(jì)算,因?yàn)閍為9,且要自增1,所以輸出10。 10 [jb51.net]$ echo $a #執(zhí)行上面的表達(dá)式后,a自增1,因此a為10。 10
本教程假設(shè)讀者具備基本的編程能力,相信讀者對(duì)于前自增(前自減)和后自增(后自減)的區(qū)別也非常清楚,這里就不再贅述,只進(jìn)行簡(jiǎn)單的說明:
【實(shí)例5】利用 (( )) 同時(shí)對(duì)多個(gè)表達(dá)式進(jìn)行計(jì)算。
[jb51.net]$ ((a=3+5, b=a+10)) #先計(jì)算第一個(gè)表達(dá)式,再計(jì)算第二個(gè)表達(dá)式 [jb51.net]$ echo $a $b 8 18 [jb51.net]$ c=$((4+8, a+b)) #以最后一個(gè)表達(dá)式的結(jié)果作為整個(gè)(())命令的執(zhí)行結(jié)果 [jb51.net]$ echo $c 26
到此這篇關(guān)于Shell(())實(shí)現(xiàn)對(duì)整數(shù)進(jìn)行數(shù)學(xué)運(yùn)算的文章就介紹到這了,更多相關(guān)Shell(()) 整數(shù)運(yùn)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:常州 隴南 河池 淮南 通遼 黔南 黔南 河北
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Shell(())實(shí)現(xiàn)對(duì)整數(shù)進(jìn)行數(shù)學(xué)運(yùn)算》,本文關(guān)鍵詞 Shell,實(shí)現(xiàn),對(duì),整數(shù),進(jìn)行,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。上一篇:Linux常用命令之性能命令