当前位置: 首页>>技术教程>>正文


如何在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/article/4229.html,未经允许,请勿转载。