shell之数学运算
((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 expressions?執(zhí)行一個(gè)或多個(gè)表達(dá)式。表達(dá)式中的變量前不必有$.如果表達(dá)式中包含了空格或其他特殊字符,則必須引起來。
例:let “I = I + 1” 或 let i=i+1
?
算術(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)算符時(shí),需要注意到運(yùn)算順序的問題。例如輸入下面的命令,輸出1+2的結(jié)果。
echo 1+2
Shell并沒有輸出結(jié)果3,而是輸出了1+2。
總結(jié):
在shell中有幾種方法可以進(jìn)行數(shù)學(xué)運(yùn)算。
1,用expr改變運(yùn)算順序。可以用echo `expr 1 +2`來輸出1+2的結(jié)果,用expr表示后面的表達(dá)式為一個(gè)數(shù)學(xué)運(yùn)算。需要注意的是,`并不是一個(gè)單引號(hào),而是“Tab”鍵上面的那個(gè)符號(hào)。
2,用let指示數(shù)學(xué)運(yùn)算。可以先將運(yùn)算的結(jié)果賦值給變量b,運(yùn)算命令是b=let 1 + 2。然后用echo$b來輸出b的值。如果沒有l(wèi)et,則會(huì)輸出1+2。
3,用$[]表示數(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。
4,雙小括號(hào)(()),$((expression)) 和`expr expression`效果相同, 計(jì)算數(shù)學(xué)表達(dá)式exp的數(shù)值,雙括號(hào)中的變量可以不使用$符號(hào)前綴。
(1) let var=算術(shù)表達(dá)式
(2) var=$[算術(shù)表達(dá)式]
(3) var=$((算術(shù)表達(dá)式))
(4) var=$(expr arg1 arg2 arg3 …) 乘法時(shí)要轉(zhuǎn)譯* ,即\*
(5) declare –i var = 算術(shù)表達(dá)式
(6) echo ‘算術(shù)表達(dá)式’ | bc (丟給計(jì)算機(jī)進(jìn)行處理)
(7) ((var=算術(shù)表達(dá)式))
(8) var=`expr arg1 arg2 arg3`
expr表達(dá)式時(shí)表達(dá)式和運(yùn)算符之間要有空格,即2 + 2,不能是2+2
例子:
let a=1+1
b=$[2+2]
c=$((3+3))
d=$(expr 4 + 4)
declare -i e=5+5
f=`echo "1+2"|bc`
g=`expr 2 + 3`
((h=3 + 4))
總結(jié)
以上是生活随笔為你收集整理的shell之数学运算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机收藏夹位于哪个磁盘,win10收藏
- 下一篇: 【科普贴】MOS管开关原理及应用详解