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