當前位置: 首頁>>技術教程>>正文


如何在Linux命令行中做基礎數學計算/數值運算

Do Math on Linux Shell

Linux bash或命令行可讓您執行基本和複雜的算術和布爾運算。諸如expr,jot,bc和factor等命令可幫助您找到複雜問題的最佳數學解決方案。在本文中,我們將描述這些命令並提供示例,這些示例將成為您轉向更有用的數學解決方案的基礎。

這裏以Ubuntu為例,我們已經在Ubuntu 18.04 LTS係統上運行了本文中提到的命令和過程。其他基於LINUX係統終端也一樣可以用這裏的命令!

我們使用Ubuntu命令行Terminal(終端)來執行所有數學運算。您可以通過係統Dash或Ctrl + Alt + T快捷方式打開終端。

expr命令

在Linux中,expr或expression命令是用於執行數學計算的最常用命令。您可以使用此命令執行加,減,乘,除,增大一個值,甚至比較兩個值等功能。在本節中,我們將描述執行上述計算的語法,並介紹如何在Ubuntu/Linux命令行中使用expr命令執行數學運算。

加成

您可以通過expr命令將兩個或多個數字相加,如下所示:

$ expr 數字1 +數字2

例:

$ expr 100 + 10

Math: Addition

減法

您可以通過expr命令對兩個或多個數字進行減法,如下所示:

$ expr 數字1 –數字2

例:

$ expr 100 - 10

Math: Substraction

乘法

您可以通過expr命令對兩個或多個數字進行乘法運算,如下所示:

$ expr 數字1 \* 數字2

例:

$ expr 10 \* 10

Math: Multiplication

請注意,以下是Linux命令行中數字乘法的錯誤語法,因為命令行使用簡單星號作為對當前目錄中所有文件的引用。

$ expr  10 * 10

Escape multiplicator sign correctly

除法

您可以通過expr命令將一個數除以另一個,如下所示:

$ expr 數字1 / 數字2

例:

$ expr 100 / 10

Division

遞增變量

您可以在Linux中首先定義變量,如下所示:

$ count_variable=0

然後,使用以下表達式,並使用expr命令來執行增量操作:

$ count_variable=`expr $count_variable + 1`

現在,當您通過以下命令回顯變量值時,它將打印初始定義的變量的增量值。

$ echo $count_variable

Increment a variable

比較

通過expr命令,您還可以檢查一個數字是否大於另一個數字。

$  expr  數字1 \>   數字2

例:

$ expr 20 \> 10

Math: Comparison

結果值1表示第一個數字大於第二個數字。而結果值0表示第一個數字不大於第二個數字。

例:

$ expr 10 \> 20

Comparison example 2

通過expr命令,您還可以使用以下語法查看兩個數字是否相等:

$ expr 數字1 = 數字2

例子:

$ expr 10 = 10
$ expr 10 = 15

Equal comparison

結果值1表示第一個數字等於第二個數字。而結果值0表示兩個數字不相等。

在上麵的示例中,我們可以從裸眼看到兩個比較數字是否相等。那麽該操作有什麽用呢?

讓我們假設在程序執行過程中,我們想知道幾個數字的計算平均值是否等於10。在這裏,我們可以充分利用expr命令來將“average”變量的結果與10進行比較,並根據該結果執行進一步的操作。

$ average=10
$ expr $average = 10

Average

有效利用expr命令

讓我們給出一個示例,在此示例中,我們將使用expr命令來計算當有10個孩子和122個糖果時,一個孩子得到多少個糖果。該程序還將計算所有孩子得到相等數量的糖果後剩餘的剩餘糖果數量。

$ children=10
$ sweets=122
$ PerChildShare=`expr $sweets / $children`
$ RemainingSweets=`expr $sweets - $children \* $PerChildShare`

echo $PerChildShare
echo $RemainingSweets

Using expr command

輸出完美地顯示出每個孩子的平均應得份額是12,還剩下2。

jot命令

Linux jot命令基於您提供的作為起始數字的值以及要在其後查看的值數來創建數字列表。在本節中,我們將描述通過jot執行計算的語法,並介紹如何在Ubuntu命令行中使用jot命令執行數字運算。

您可能首先需要安裝Athena-jot才能在Ubuntu上使用jot命令。

輸入以下命令作為sudo,因為隻有授權人員可以在Ubuntu上添加/刪除和配置軟件:

$ sudo apt install athena-jot

Install athena-jot

Install athena-jot

係統可能會提示您選擇“是/否”,以確認繼續安裝。請輸入Y,然後按Enter鍵繼續,軟件將被安裝到係統上。

輸出數字y之後的x個數字

使用jot命令,可以在打印y之後的x個數字。使用以下命令來這樣做:

$ jot  x y

以下示例將使您清楚地了解問題:

$ jot 5 1

Print x numbers after the number y

我們的示例輸出在數字1(y)之後顯示5個連續(x)值的列表。

在數字y和數字z之間反向打印x個數字

您還可以使用jot命令以在數字y之後反向打印x數量的值,以數字z結尾。使用以下語法來這樣做:

$  jot x y z

以下示例將使您清楚地了解問題:

$ jot 9 10 2

Reverse print x numbers after the number y till the number z

我們的示例輸出反向顯示數字10(y)之前的9(x)個值,直到列表達到數字2(z)。

高效使用jot命令

讓我們給出一個例子,在此示例中,我們將使用jot命令從1天(y值)開始打印一月的15天(x值)。

$ for i in `jot 15 1`; do echo January $i; done

這是輸出:

Making productive use of the jot command

我們通過將jot命令的輸出用作變量i的輸入值來使用for循環。

factor命令

顧名思義,Linux中的factor命令用於計算我們提供的數字的因子分解(factor)值。【因子分解,將一個數字分解為多個質數相乘】

句法:

$  factor 數字

例子:

Factor command examples

在上麵的示例中,您可以看到factor命令如何打印給定數字中除13之外的多個質數(因子),因為數字13除了自身之外沒有其他質數(因子)。

bc命令

在bash中執行複雜操作時,bc命令非常有用。該命令還可以進行比較,處理布爾值並計算平方根,正弦,餘弦和切線等。您需要做的就是將數學表達式通過管道傳遞給bc命令,如下所示:

$ echo “math_expression” | bc

然後,輸出顯示數學表達式的結果。

例:

$ echo "10+10/2-(2*2)" | bc

BC command example

計算Pi

由於bc命令可以處理浮點數,您要輸入的字符串非常簡單。因此可以使用它來將pi的值,按所需的小數位數。

在以下示例中,我們通過指定小數點後四舍五入來打印pi的值。

$ echo "scale=2; 4*a(1)" | bc -l

Calculating pi on Linux command line

由於小數位值為2,因此pi的結果保留小數點後兩位。

echo "scale=10; 4*a(1)" | bc -l

Set higher scale value

由於小數位值為10,因此pi的結果保留小數點後十位。

執行Bash 數字運算

您可以通過使用一組雙括號來執行簡單的bash數學。通過這種技術,您可以在bash中執行算術和布爾運算。

算術

可以在Linux bash中執行以下算術運算列表:

+,- 加,減
++,– 遞增,遞減
*,/,% 乘法,除法,餘數
** 指數值

範例1:

$ ((x=10))
$ (( e = e + 5 ))
$ echo $e

範例2:

$ ((x=10))
$ ((x--))
$ echo $e

範例3:

$ ((x=10))
$ ((x=x**2))
$ echo $e

布爾和邏輯

bash數學還允許您在疑問括號內使用布爾值和邏輯表達式來執行數學計算。

例:

$ ((x=10)); ((y=5))

if (( x > y )); then echo $x; fi

Boolean Bash Math example

本示例比較兩個變量,並僅在x的值大於y時輸出x的值。

通過本文介紹的命令語法和示例,您現在可以通過Linux bash執行基本的數學運算。這將為您執行更複雜的操作(例如使用bash腳本編寫程序)奠定基礎。此外,您還可以執行交互式數學,從用戶輸入值,處理輸入,然後根據這些值輸出結果。

參考資料

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/4229.html,未經允許,請勿轉載。