shell腳本--數值計算


  原生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

  鑒於計算時很難記錯,運算符之間是否要加空格,統一推薦加,如果是乘號*,則轉義。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM