a=$a+$b的形式:
((i=$j+$k)) 等價(jià)于 i=`expr $j + $k`
((i=$j-$k)) 等價(jià)于 i=`expr $j -$k`
((i=$j*$k)) 等價(jià)于 i=`expr $j \*$k`
((i=$j/$k)) 等價(jià)于 i=`expr $j /$k`
Let 形式:
Let expressions 執(zhí)行一個(gè)或多個(gè)表達(dá)式凰锡。表達(dá)式中的變量前不必有$.如果表達(dá)式中包含了空格或其他特殊字符,則必須引起來寡夹。
例:let “I = I + 1”
或 let i=I+1
常用數(shù)學(xué)運(yùn)算符:
算術(shù)運(yùn)算符指的是可以在程序中實(shí)現(xiàn)加处面、減菩掏、乘魂角、除等數(shù)學(xué)運(yùn)算的運(yùn)算符智绸。Shell中常用的數(shù)學(xué)運(yùn)算符如下所示。
— +:對(duì)兩個(gè)變量做加法瞧栗。
— -:對(duì)兩個(gè)變量做減法。
— *:對(duì)兩個(gè)變量做乘法迹恐。
— /:對(duì)兩個(gè)變量做除法挣惰。
— **:對(duì)兩個(gè)變量做冪運(yùn)算殴边。
— %:取模運(yùn)算,第一個(gè)變量除以第二個(gè)變量求余數(shù)锤岸。
— +=:加等于,在自身基礎(chǔ)上加第二個(gè)變量是偷。
— -=:減等于拳氢,在第一個(gè)變量的基礎(chǔ)上減去第二個(gè)變量蛋铆。
— *=:乘等于馋评,在第一個(gè)變量的基礎(chǔ)上乘以第二個(gè)變量刺啦。
— /=:除等于,在第一個(gè)變量的基礎(chǔ)上除以第二個(gè)變量洪燥。
— %=:取模賦值磕秤,第一個(gè)變量對(duì)第二個(gè)變量取模運(yùn)算捧韵,再賦值給第一個(gè)變量。
運(yùn)算可以使用的方法:
運(yùn)算順序問題:echo 1+2
不等于3
在使用這些運(yùn)算符時(shí)再来,需要注意到運(yùn)算順序的問題磷瘤。例如輸入下面的命令,輸出1+2的結(jié)果搜变。
echo 1+2
Shell并沒有輸出結(jié)果3,而是輸出了1+2挠他。在shell中有三種方法可以更改運(yùn)算順序。
用expr改變運(yùn)算順序殖侵。可以用echo
expr 1 +2
來輸出1+2
的結(jié)果拢军,用expr
表示后面的表達(dá)式為一個(gè)數(shù)學(xué)運(yùn)算。需要注意的是茉唉,`并不是一個(gè)單引號(hào),而是“Tab”鍵上面的那個(gè)符號(hào)度陆。用
let
指示數(shù)學(xué)運(yùn)算艾凯〖嵛撸可以先將運(yùn)算的結(jié)果賦值給變量b斜姥,運(yùn)算命令是b=let 1 + 2
鸿竖。然后用echo $b
來輸出b
的值铸敏。如果沒有let
缚忧,則會(huì)輸出1+2
杈笔。用
$[]
表示數(shù)學(xué)運(yùn)算。將一個(gè)數(shù)學(xué)運(yùn)算寫到$[]
符號(hào)的中括號(hào)中蒙具,中括號(hào)中的內(nèi)容將先進(jìn)行數(shù)學(xué)運(yùn)算。例如命令echo $[1+2]
禁筏,將輸出結(jié)果3
持钉。
shell實(shí)例:S=3(xy)+4x2+5y+6
下面是一個(gè)shell程序?qū)嵗槲簦瑢?shí)現(xiàn)數(shù)學(xué)函數(shù)S=3(xy)+4x2+5y+6
的運(yùn)算始腾。在程序中以位置變量的方式輸入x
與y
的值。程序的編寫步驟如下所示空执。
在主菜單中打開一個(gè)終端。在終端中輸入“vim
”命令打開VIM辨绊。
在VIM中按“i
”鍵進(jìn)入插入模式,然后輸入下面的代碼门坷。
代碼4-2 數(shù)學(xué)運(yùn)算實(shí)例:\源文件\04\4.4.sh
#!/bin/bash
#4.4.sh
s=0 #定義一個(gè)求和變量,初值為0拜鹤。
t=`expr$1**$2` #用expr改變運(yùn)算順序,求x的y次方敏簿。
t=$[t*3] #t乘以3。
s=$[s+t] #結(jié)果相加惯裕。
t=$[$1**2] #求x的平方。
t=$[t*4] #結(jié)果乘以4蜻势。
s=$[s+t] #結(jié)果相加。
t=`expr$2*5` #求5y的值握玛。
s=$[s+t] #結(jié)果相加够傍。
s=$[s+6] #結(jié)果加上6挠铲。
echo$s #輸出結(jié)果。
echo$((a%b)) #取余
在這個(gè)程序中拂苹,需要注意算術(shù)運(yùn)算的寫法。如果沒有expr
或$[]
更改運(yùn)算順序瓢棒,則會(huì)將運(yùn)算式以字符串的形式賦值浴韭,而不會(huì)賦值運(yùn)算結(jié)果脯宿。
按“Esc
”鍵返回到普通模式。然后輸入“:w 4.4.sh
”保存文件嗅绰。
輸入“:q
”命令舍肠,按“Enter
”鍵退出VIM。
在終端中翠语,輸入下面的命令對(duì)4.4.sh文件添加可執(zhí)行權(quán)限。
chmod +x 4.4.sh
輸入下面的命令運(yùn)行程序肌括。在命令中需要輸入兩個(gè)參數(shù)。
./4.4.sh 2 4
程序會(huì)完成S=3(xy)+4x2+5y+6
的數(shù)學(xué)運(yùn)算并輸出結(jié)果谍夭,結(jié)果如下所示。
90
云平臺(tái)開發(fā)運(yùn)維解決方案@george.sre
個(gè)人主頁:https://geekgoogle.com
GitHub: https://github.com/george-sre
簡(jiǎn)書: georgesre - 簡(jiǎn)書
歡迎交流~