Bash 初學者系列 5:在 bash 中進行數學運算
在編寫 bash 腳本的時候,經常會遇到需要計算數學結果的情況,比如需要計算磁盤剩余空間、文件大小、密碼到期時間、主機數量、網絡帶寬等。
今天我們將介紹在 bash 中使用運算符來執行算術運算。
總體來說,bash 中的算術運算符包括以下這些:
運算符 | 描述 |
+ | 加法運算 |
- | 減法運算 |
* | 乘法運算 |
/ | 整除 |
% | 求余 |
** | 冪運算 |
在bash腳本中執行加法和減法
為了便于演示,我們創建一個名為 addition.sh 的腳本文件,添加兩個文件的大小(以字節 byte 為單位),并輸出。
為此,大家需要了解 bash 腳本中的參數,還有 cut 以及 du 命令。
du 命令計算文件的大小,其輸出包括兩列,分別為文件大小和文件名,cut 命令取出其中的第一列(即文件大小);du 命令的輸出通過??管道重定向???傳遞給 cut 命令。
腳本如下所示:?
在運行上述腳本的時候,需要給出兩個文件名作為參數。比如,我們將文件 /etc/passwd 和 /etc/group 作為參數來運行該腳本:?
在 addition.sh 腳本中最重要的一行為:
上面代碼使用 運算符 + 將兩個數字 $fs1 和 $fs2 相加。這里需要注意的是,算術表達式需要使用雙括號將其括起來:
也可以使用減號運算符 - 來進行減法運算。比如,下面的代碼,其結果將為 7:
執行乘法和除法
我們創建一個名為 giga2mega.sh 的腳本文件,用于將 GB 轉為 MB,如下所示:?
下面我們來執行一下,看看 4GB 相當于多少 MB:?
在這里,我們使用了乘法(*)運算符將 GB 數乘以1024,得到等效的兆字節數:
類似的,將 GB 轉為 KB 也是一樣的做法:
除法運算符 / 用于兩個數相除,比如下面例子:
注意,這里是整除,所有的小數部分會丟失。比如,計算 5 除以 2,其結果為 2:?
要實際計算兩個數相除的結果(獲取十進制的結果),可使用 bc 命令,比如,還是計算 5 除以 2,可參照如下代碼:?
另外,在其他算術運算符中也可以使用 bc 命令:
使用冪和余數(模)
下面我們使用冪運算符 ** 進行求冪運算。首先創建一個名為 power.sh 的腳本,接受兩個數字作為參數:a 和 b,然后計算 a 的 b 次冪,如下代碼所示:?
我們來運行一下:?
計算余數使用運算符 %,如下所示:
其結果為 2,大家可以運行試一下。