shell算數運算

((i=$j+$k))    等價於 i=`expr $j + $k`
((i=$j-$k))     等價於   i=`expr $j -$k`
((i=$j*$k))     等價於   i=`expr $j \*$k`
((i=$j/$k))     等價於   i=`expr $j /$k`shell


Let expressions 執行一個或多個表達式。表達式中的變量前沒必要有$.若是表達式中包含了空格或其餘特殊字符,則必須引發來。express

例:let 「I = I + 1」 或 let i=i+1vim

 

算術運算符指的是能夠在程序中實現加、減、乘、除等數學運算的運算符。Shell中經常使用的數學運算符以下所示。bash

— +:對兩個變量作加法。函數

— -:對兩個變量作減法。字符串

— *:對兩個變量作乘法。數學

— /:對兩個變量作除法。it

— **:對兩個變量作冪運算。io

— %:取模運算,第一個變量除以第二個變量求餘數。class

— +=:加等於,在自身基礎上加第二個變量。

— -=:減等於,在第一個變量的基礎上減去第二個變量。

— *=:乘等於,在第一個變量的基礎上乘以第二個變量。

— /=:除等於,在第一個變量的基礎上除以第二個變量。

— %=:取模賦值,第一個變量對第二個變量取模運算,再賦值給第一個變量。

在使用這些運算符時,須要注意到運算順序的問題。例如輸入下面的命令,輸出1+2的結果。

echo 1+2

Shell並無輸出結果3,而是輸出了1+2。在shell中有三種方法能夠更改運算順序。

— 用expr改變運算順序。能夠用echo `expr 1 +2`來輸出1+2的結果,用expr表示後面的表達式爲一個數學運算。須要注意的是,`並非一個單引號,而是「Tab」鍵上面的那個符號。

— 用let指示數學運算。能夠先將運算的結果賦值給變量b,運算命令是b=let 1 + 2。而後用echo$b來輸出b的值。若是沒有let,則會輸出1+2。

— 用$[]表示數學運算。將一個數學運算寫到$[]符號的中括號中,中括號中的內容將先進行數學運算。例如命令echo$[1+2],將輸出結果3。

下面是一個shell程序實例,實現數學函數S=3(xy)+4x2+5y+6的運算。在程序中以位置變量的方式輸入x與y的值。程序的編寫步驟以下所示。

 在主菜單中打開一個終端。在終端中輸入「vim」命令打開VIM。

 在VIM中按「i」鍵進入插入模式,而後輸入下面的代碼。

代碼4-2  數學運算實例:\源文件\04\4.4.sh

#!/bin/bash

#4.4.sh

s=0                                    #定義一個求和變量,初值爲0。

t=`expr$1**$2`                        #用expr改變運算順序,求x的y次方。

t=$[t*3]                               #t乘以3。

s=$[s+t]                               #結果相加。

t=$[$1**2]                             #求x的平方。

t=$[t*4]                               #結果乘以4。

s=$[s+t]                               #結果相加。

t=`expr$2*5`                          #求5y的值。

s=$[s+t]                               #結果相加。

s=$[s+6]                               #結果加上6。

echo$s                                #輸出結果。

echo$((a%b))                          #取餘

 在這個程序中,須要注意算術運算的寫法。若是沒有expr或$[]更改運算順序,則會將運算式以字符串的形式賦值,而不會賦值運算結果。

 按「Esc」鍵返回到普通模式。而後輸入「:w 4.4.sh」保存文件。

 輸入「:q」命令,按「Enter」鍵退出VIM。

 在終端中,輸入下面的命令對4.4.sh文件添加可執行權限。

chmod +x 4.4.sh

 輸入下面的命令運行程序。在命令中須要輸入兩個參數。

./4.4.sh 2 4

 程序會完成S=3(xy)+4x2+5y+6的數學運算並輸出結果,結果以下所示。

90

相關文章
相關標籤/搜索