((i=$j+$k)) 等價於 i=`expr $j + $k` 等價於 i=`echo $j + echo $k |bc -l`
((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`
let expressions 執行乙個或多個表示式。表示式中的變數前不必有$.如果表示式中包含了空格或其他特殊字元,則必須引起來。
例:let 「i = i + 1」 或 let i=i+1
算術運算子指的是可以在程式中實現加、減、乘、除等數**算的運算子。shell中常用的數**算符如下所示。
— +:對兩個變數做加法。
— -:對兩個變數做減法。
— *:對兩個變數做乘法。
— /:對兩個變數做除法。
— **:對兩個變數做冪運算。
— %:取模運算,第乙個變數除以第二個變數求餘數。
— +=:加等於,在自身基礎上加第二個變數。
— -=:減等於,在第乙個變數的基礎上減去第二個變數。
— *=:乘等於,在第乙個變數的基礎上乘以第二個變數。
— /=:除等於,在第乙個變數的基礎上除以第二個變數。
— %=:取模賦值,第乙個變數對第二個變數取模運算,再賦值給第乙個變數。
在使用這些運算子時,需要注意到運算順序的問題。例如輸入下面的命令,輸出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
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 let expressions 執行乙個或多個表示式。表示式中的變數前不必有 如果表示式中包含了空格或其他特殊字元,則必須引起來。例...
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 let expressions 執行乙個或多個表示式。表示式中的變數前不必有 如果表示式中包含了空格或其他特殊字元,則必須引起來。例...
shell變數算數運算
bash shell 的算術運算有四種方式 1 使用 expr 外部程式 加法 r expr 4 5 echo r 注意 4 5 這三者之間要有空白 r expr 4 5 錯誤 乘法 r expr 4 5 2 使用 r 4 5 echo r 3 使用 r 4 5 echo r 乘法r expr 4 ...