主頁 > 知識庫 > Shell(())實(shí)現(xiàn)對整數(shù)進(jìn)行數(shù)學(xué)運(yùn)算

Shell(())實(shí)現(xiàn)對整數(shù)進(jìn)行數(shù)學(xué)運(yùn)算

熱門標(biāo)簽:沈陽ai電銷智能機(jī)器人 地圖標(biāo)注審核周期 AI智能電銷機(jī)器人壞處 黑暗之魂3地圖標(biāo)注 電商外呼系統(tǒng)排名 電話機(jī)器人對家居行業(yè)幫助大嗎 蘭州電銷機(jī)器人加盟 如何申請400的電話呀 合肥電銷外呼系統(tǒng)供應(yīng)商

雙小括號 (( )) 是 Bash Shell 中專門用來進(jìn)行整數(shù)運(yùn)算的命令,它的效率很高,寫法靈活,是企業(yè)運(yùn)維中常用的運(yùn)算命令。

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

Shell (( )) 的用法

雙小括號 (( )) 的語法格式為:
((表達(dá)式))

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

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

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

表1:(( )) 的用法

運(yùn)算操作符/運(yùn)算命令 說明
((a=10+66)
((b=a-15))
((c=a+b))
這種寫法可以在計算完成后給變量賦值。以 ((b=a-15)) 為例,即將 a-15 的運(yùn)算結(jié)果賦值給變量 c。

注意,使用變量時不用加$前綴,(( )) 會自動解析變量名。
a=$((10+66)
b=$((a-15))
c=$((a+b))
可以在 (( )) 前面加上$符號獲取 (( )) 命令的執(zhí)行結(jié)果,也即獲取整個表達(dá)式的值。以 c=$((a+b)) 為例,即將 a+b 這個表達(dá)式的運(yùn)算結(jié)果賦值給變量 c。

注意,類似 c=((a+b)) 這樣的寫法是錯誤的,不加$就不能取得表達(dá)式的結(jié)果。
((a>7 b==c)) (( )) 也可以進(jìn)行邏輯運(yùn)算,在 if 語句中常會使用邏輯運(yùn)算。
echo $((a+10)) 需要立即輸出表達(dá)式的運(yùn)算結(jié)果時,可以在 (( )) 前面加$符號。
((a=3+5, b=a+10)) 對多個表達(dá)式同時進(jìn)行計算。

在 (( )) 中使用變量無需加上$前綴,(( )) 會自動解析變量名,這使得代碼更加簡潔,也符合程序員的書寫習(xí)慣。

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

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

[jb51.net]$ echo $((1+1))
2
[jb51.net]$ echo $((6-3))
3
[jb51.net]$ i=5
[jb51.net]$ ((i=i*2)) #可以簡寫為 ((i*=2))。
[jb51.net]$ echo $i #使用 echo 輸出變量結(jié)果時要加 $。
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é)果賦值給變量,變量放在了括號的外面。
[jb51.net]$ echo $b
8
[jb51.net]$ echo $((1+2**3-4%3)) #也可以直接將表達(dá)式的結(jié)果輸出,注意不要丟掉 $ 符號。
8
[jb51.net]$ a=$((100*(100+1)/2)) #利用公式計算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

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

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

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

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

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

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

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

到此這篇關(guān)于Shell(())實(shí)現(xiàn)對整數(shù)進(jìn)行數(shù)學(xué)運(yùn)算的文章就介紹到這了,更多相關(guān)Shell(()) 整數(shù)運(yùn)算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Linux Shell腳本系列教程(五):數(shù)學(xué)運(yùn)算
  • Shell實(shí)現(xiàn)的一些數(shù)學(xué)運(yùn)算自定義函數(shù)分享
  • Windows Powershell 進(jìn)行數(shù)學(xué)運(yùn)算
  • Shell腳本編程中常用的數(shù)學(xué)運(yùn)算實(shí)例
  • 通過shell進(jìn)行數(shù)學(xué)運(yùn)算的多種方式
  • Shell中的數(shù)學(xué)運(yùn)算使用

標(biāo)簽:常州 隴南 河池 淮南 通遼 黔南 黔南 河北

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Shell(())實(shí)現(xiàn)對整數(shù)進(jìn)行數(shù)學(xué)運(yùn)算》,本文關(guān)鍵詞  Shell,實(shí)現(xiàn),對,整數(shù),進(jìn)行,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Shell(())實(shí)現(xiàn)對整數(shù)進(jìn)行數(shù)學(xué)運(yùn)算》相關(guān)的同類信息!
  • 本頁收集關(guān)于Shell(())實(shí)現(xiàn)對整數(shù)進(jìn)行數(shù)學(xué)運(yùn)算的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章