原生bash不支持簡單的數學運算,即使是最簡單的加減乘除
但是,可以使用$[]和expr來實現整數運算
如果要實現小數運算,可以使用bc命令
使用$[]來實現:
#!/bin/bash #文件名:test.sh echo $[ 1 + 3 ] echo $[ $1 + $2 ] echo $[ $1 - $2 ] echo $[ $1 * $2 ] #此時不用對*轉義 echo $[ $1 / $2 ] echo $[ $1 % $2 ]
執行腳本:
ubuntu@ubuntu:~$ ./test.sh 10 20 4 30 -10 200 0 10 ubuntu@ubuntu:~$
主要注意的是:
1、運算符和兩邊要進行計算的數值之間,有空格
2、雖然兩個方括號和要進行計算的數值之間可以沒有空格,但是強烈建議增加一個空格,因為后面會學到很多時候,方括號和參數之間都有空格。
使用expr實現:
#!/bin/bash #文件名:test.sh #expr是一個用於數值計算的命令 #此時運算符號兩邊必須加空格,不加空格會原樣輸出,不會計算 expr 1 + 3 #命令行第2個參數和第3個參數求和 expr $1 + $2 expr $1 - $2 expr $1 * $2 #失敗 expr $1 \* $2 #因為乘號*在shell中有特殊的含義,所以要轉義 expr $1 / $2 #除法取商 expr $1 % $2 #除法取模
運行腳本:
ubuntu@ubuntu:~$ ./test.sh 10 20 4 30 -10 expr: syntax error 200 0 10 ubuntu@ubuntu:~$
使用expr之前先了解一下反引號``的功能,反引號的功能是將反引號括起來的內容執行,沒錯,就是執行,這就意味着,反引號括起來的是一條命令,此時是一個命令的運行結果,而結果就是一條命令,並且反引號不能單獨使用,要將包含反引號及其括起來的語句賦值給一個變量,否則出錯;如果不想將其賦給一個變量,就不要用反引號,直接寫反引號中的內容,因為其內容就是一條命令。
#!/bin/bash #文件名:test.sh #此時運算符號兩邊必須加空格 #必須將反引號中命令的結果賦給一個變量 num=`expr 1 + 3` echo $num #命令行第2個參數和第3個參數求和 num=`expr $1 + $2` echo $num #乘法運算符仍要轉義 num=`expr $1 \* $2` echo $num
運行腳本:
ubuntu@ubuntu:~$ ./test.sh 10 20 4 30 200 ubuntu@ubuntu:~$
使用bc進行浮點數計算
ubuntu@ubuntu:~$ echo 1.4*4 | bc #乘號和運算數之間沒有空格時,不用轉義 5.6 ubuntu@ubuntu:~$ echo 1.4 \* 4 | bc #乘號和運算數之間有空格時,必須轉義 5.6 ubuntu@ubuntu:~$ echo 1.5-4 | bc -2.5
鑒於計算時很難記錯,運算符之間是否要加空格,統一推薦加,如果是乘號*,則轉義。
