日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Shell(()):對(duì)整數(shù)進(jìn)行數(shù)學(xué)運(yùn)算
雙小括號(hào) (( )) 是 Bash Shell 中專門(mén)用來(lái)進(jìn)行整數(shù)運(yùn)算的命令,它的效率很高,寫(xiě)法靈活,是企業(yè)運(yùn)維中常用的運(yùn)算命令。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、網(wǎng)站建設(shè)、溫江網(wǎng)絡(luò)推廣、成都小程序開(kāi)發(fā)、溫江網(wǎng)絡(luò)營(yíng)銷、溫江企業(yè)策劃、溫江品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供溫江建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com

注意:(( )) 只能進(jìn)行整數(shù)運(yùn)算,不能對(duì)小數(shù)(浮點(diǎn)數(shù))或者字符串進(jìn)行運(yùn)算。后續(xù)講到的 bc 命令可以用于小數(shù)運(yùn)算。

Shell (( )) 的用法

雙小括號(hào) (( )) 的語(yǔ)法格式為:

((表達(dá)式))

通俗地講,就是將數(shù)學(xué)運(yùn)算表達(dá)式放在
((
))之間。

表達(dá)式可以只有一個(gè),也可以有多個(gè),多個(gè)表達(dá)式之間以逗號(hào)
,分隔。對(duì)于多個(gè)表達(dá)式的情況,以最后一個(gè)表達(dá)式的值作為整個(gè) (( )) 命令的執(zhí)行結(jié)果。

可以使用
$獲取 (( )) 命令的結(jié)果,這和使用
$獲得變量值是類似的。

表1:(( )) 的用法
運(yùn)算操作符/運(yùn)算命令 說(shuō)明
((a=10+66)
((b=a-15))
((c=a+b))
這種寫(xiě)法可以在計(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)) 這樣的寫(xiě)法是錯(cuò)誤的,不加$就不能取得表達(dá)式的結(jié)果。

((a>7 && b==c)) (( )) 也可以進(jìn)行邏輯運(yùn)算,在 if 語(yǔ)句中常會(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ì)算。


在 (( )) 中使用變量無(wú)需加上$前綴,(( )) 會(huì)自動(dòng)解析變量名,這使得代碼更加簡(jiǎn)潔,也符合程序員的書(shū)寫(xiě)習(xí)慣。

Shell (( )) 實(shí)例演示

【實(shí)例1】利用 (( )) 進(jìn)行簡(jiǎn)單的數(shù)值計(jì)算。

[c.biancheng.net]$ echo $((1+1))
2
[c.biancheng.net]$ echo $((6-3))
3
[c.biancheng.net]$ i=5
[c.biancheng.net]$ ((i=i*2))  #可以簡(jiǎn)寫(xiě)為 ((i*=2))。
[c.biancheng.net]$ echo $i   #使用 echo 輸出變量結(jié)果時(shí)要加 $。
10

【實(shí)例2】用 (( )) 進(jìn)行稍微復(fù)雜一些的綜合算術(shù)運(yùn)算。

[c.biancheng.net]$ ((a=1+2**3-4%3))
[c.biancheng.net]$ echo $a
8
[c.biancheng.net]$ b=$((1+2**3-4%3)) #運(yùn)算后將結(jié)果賦值給變量,變量放在了括號(hào)的外面。
[c.biancheng.net]$ echo $b
8
[c.biancheng.net]$ echo $((1+2**3-4%3)) #也可以直接將表達(dá)式的結(jié)果輸出,注意不要丟掉 $ 符號(hào)。
8
[c.biancheng.net]$ a=$((100*(100+1)/2)) #利用公式計(jì)算1+2+3+...+100的和。
[c.biancheng.net]$ echo $a
5050
[c.biancheng.net]$ echo $((100*(100+1)/2)) #也可以直接輸出表達(dá)式的結(jié)果。
5050

【實(shí)例3】利用 (( )) 進(jìn)行邏輯運(yùn)算。

[c.biancheng.net]$ echo $((3<8))  #3<8 的結(jié)果是成立的,因此,輸出了 1,1 表示真
1
[c.biancheng.net]$ echo $((8<3))  #8<3 的結(jié)果是不成立的,因此,輸出了 0,0 表示假。
0
[c.biancheng.net]$ echo $((8==8)) #判斷是否相等。
1
[c.biancheng.net]$ if ((8>7&&5==5))
> then
> echo yes
> fi
yes

最后是一個(gè)簡(jiǎn)單的 if 語(yǔ)句的格式,它的意思是,如果 8>7 成立,并且 5==5 成立,那么輸出 yes。顯然,這兩個(gè)條件都是成立的,所以輸出了 yes。

【實(shí)例4】利用 (( )) 進(jìn)行自增(++)和自減(--)運(yùn)算。

[c.biancheng.net]$ a=10
[c.biancheng.net]$ echo $((a++))  #如果++在a的后面,那么在輸出整個(gè)表達(dá)式時(shí),會(huì)輸出a的值,因?yàn)閍為10,所以表達(dá)式的值為10。
10
[c.biancheng.net]$ echo $a #執(zhí)行上面的表達(dá)式后,因?yàn)橛衋++,因此a會(huì)自增1,因此輸出a的值為11。
11
[c.biancheng.net]$ a=11
[c.biancheng.net]$ echo $((a--)) #如果--在a的后面,那么在輸出整個(gè)表達(dá)式時(shí),會(huì)輸出a的值,因?yàn)閍為11,所以表達(dá)式的值的為11。
11
[c.biancheng.net]$ echo $a #執(zhí)行上面的表達(dá)式后,因?yàn)橛衋--,因此a會(huì)自動(dòng)減1,因此a為10。
10
[c.biancheng.net]$ a=10
[c.biancheng.net]$ echo $((--a))  #如果--在a的前面,那么在輸出整個(gè)表達(dá)式時(shí),先進(jìn)行自增或自減計(jì)算,因?yàn)閍為10,且要自減,所以表達(dá)式的值為9。
9
[c.biancheng.net]$ echo $a #執(zhí)行上面的表達(dá)式后,a自減1,因此a為9。
9
[c.biancheng.net]$ echo $((++a))  #如果++在a的前面,輸出整個(gè)表達(dá)式時(shí),先進(jìn)行自增或自減計(jì)算,因?yàn)閍為9,且要自增1,所以輸出10。
10
[c.biancheng.net]$ echo $a  #執(zhí)行上面的表達(dá)式后,a自增1,因此a為10。
10

本教程假設(shè)讀者具備基本的編程能力,相信讀者對(duì)于前自增(前自減)和后自增(后自減)的區(qū)別也非常清楚,這里就不再贅述,只進(jìn)行簡(jiǎn)單的說(shuō)明:

  • 執(zhí)行 echo $((a++)) 和 echo $((a--)) 命令輸出整個(gè)表達(dá)式時(shí),輸出的值即為 a 的值,表達(dá)式執(zhí)行完畢后,會(huì)再對(duì) a 進(jìn)行 ++、-- 的運(yùn)算;
  • 而執(zhí)行 echo $((++a)) 和 echo $((--a)) 命令輸出整個(gè)表達(dá)式時(shí),會(huì)先對(duì) a 進(jìn)行 ++、-- 的運(yùn)算,然后再輸出表達(dá)式的值,即為 a 運(yùn)算后的值。

【實(shí)例5】利用 (( )) 同時(shí)對(duì)多個(gè)表達(dá)式進(jìn)行計(jì)算。

[c.biancheng.net]$ ((a=3+5, b=a+10))  #先計(jì)算第一個(gè)表達(dá)式,再計(jì)算第二個(gè)表達(dá)式
[c.biancheng.net]$ echo $a $b
8 18
[c.biancheng.net]$ c=$((4+8, a+b))  #以最后一個(gè)表達(dá)式的結(jié)果作為整個(gè)(())命令的執(zhí)行結(jié)果
[c.biancheng.net]$ echo $c
26

分享名稱:Shell(()):對(duì)整數(shù)進(jìn)行數(shù)學(xué)運(yùn)算
文章來(lái)源:http://m.5511xx.com/article/dpjjicc.html