算數(shù)運(yùn)算符
shell只支持整數(shù)運(yùn)算
常見的算數(shù)運(yùn)算大多結(jié)合shell的內(nèi)建命令let來使用。
+ - * / % **(冪運(yùn)算)
+= -= *= /= %=
位運(yùn)算
>> << & | ^ ~
自增自減
++ --
例:
let "b=3"
let "a=(++b)"
其他算數(shù)運(yùn)算
簡(jiǎn)單的算數(shù)運(yùn)算進(jìn)程中,如果有1個(gè)值是字符的,那末解析為0
如R+2=2
1、使用$[]作運(yùn)算
1、到目前看到的$這樣的情勢(shì)有:${}(數(shù)組) $[](算數(shù)運(yùn)算) $()(命令替換)
2、和$(())類似,可用于簡(jiǎn)單的算數(shù)運(yùn)算
例:
echo $[1+1]
echo $[2⑴]
echo $[2*2]
echo $[5/2];//舍棄小數(shù)
echo $[5%2]
echo $[3**2]
2、使用expr作運(yùn)算
1、用于整數(shù)運(yùn)算
2、要求操作數(shù)和操作數(shù)之間用空格隔開,否則只會(huì)打印字符串,所以特殊的操作符需要轉(zhuǎn)義字符轉(zhuǎn)義(比如*)
expr 1 + 1
expr 2 - 1
expr 2 * 2
expr 2 / 1
如果編程的時(shí)候習(xí)慣了運(yùn)算符兩邊有空格,這類運(yùn)算方式還是不錯(cuò)的,固然要注意“*”需要轉(zhuǎn)義
3、使用內(nèi)建命令declare
當(dāng)用declare定義成整形后,將后面的字符串解析成了算數(shù)運(yùn)算
例:
delcare -i num
num=1+3
echo $num
注意:
shell中的算數(shù)運(yùn)算要求運(yùn)算符和操作數(shù)之間不能有空格,而是緊密鏈接的,特殊符號(hào)在這里不用轉(zhuǎn)義,如果算木表達(dá)式中含有其他變量也不需要$援用。
4、算數(shù)擴(kuò)大
算數(shù)擴(kuò)大是shell提供的整數(shù)變量的運(yùn)算機(jī)制,是shell的內(nèi)建命令之1。
基本語法:$((算數(shù)表達(dá)式))
其中,算數(shù)表達(dá)式由變量和運(yùn)算符組成,常見的用法是顯示輸出和變量賦值。若表達(dá)式中的變量沒有定義,則在運(yùn)算中假定為0(不會(huì)真給該變量賦值為0)
例:
i=2
echo $((i*3+3)) #i前沒有$符號(hào)
echo $((2*(i+2))) #用括號(hào)改變運(yùn)算優(yōu)先級(jí)
5、使用bc作運(yùn)算
上述幾種運(yùn)算都是基于整數(shù)的。
bc:1款高精度計(jì)算語言
直接輸入bc,回車進(jìn)入bc界面
1、默許情況下bc其實(shí)不顯示小數(shù),通過scale=number設(shè)置顯示的小數(shù)位數(shù)。
2、bc支持算數(shù)運(yùn)算,邏輯運(yùn)算,比較運(yùn)算
3、支持批處理和以管道方式處理表達(dá)式計(jì)算
例:
1、#cat cal.bc
a=2;b=5;a+b;
#cat cal.bc|bc
2、echo "2+3"|bc
上一篇 ios獲取剩余存儲(chǔ)空間