linux shell 算术运算符,Bash算术运算符

在本小节中,我们将学习如何在Bash中使用算术运算符。

根据希望通过脚本获得的结果类型,我们有时可能需要应用算术运算符。像变量一样,它们也很容易应用。在bash脚本中,可以对数值执行算术运算以获得所需的结果。

Bash Shell支持11种算术运算符。

下表展示了每种算术运算符的语法,描述和示例:

运算符

描述

示例

+

加法,数字(操作数)的加法

$(( 10 + 3 )),结果为:13

-

减法,从第一个到第二个操作数的减法

$(( 10 - 3 )),结果为:7

*

乘法,操作数的乘法。

$(( 10 * 3 )),结果为:30

/

除法,第一个操作数除以第二个操作数并返回商。

$(( 10 / 3 )),结果为:3

**

求幂,第一操作数的第二操作数的幂值。

$(( 10 ** 3 )),结果为:1000

%

模,测量第一个操作数除以第二个操作数时的余数。

$(( 10 % 3 )),结果为:1

+=

通过常量递增变量,用于按提供的常量递增第一个操作数的值。

x=10;let "x += 3";echo $x;结果为:13

-=

通过常量递减变量,用于按提供的常量递减第一个操作数的值。

x=10;let "x -= 3";echo $x;结果为:7

*=

将变量乘以常数,用于将第一个操作数的值乘以提供的常数。

x=10;let "x *= 3";echo $x;结果为:30

/=

将变量除以常数,用于计算(变量/常数)的值并将结果存储回变量。

x=10;let "x /= 3";echo $x;结果为:3

%=

变量除以常数的余数,用于计算(变量%常数)的值并将结果存储回变量。

x=10;let "x %= 3";echo $x;结果为:1

1. Bash执行算术运算

在bash shell上有许多选项可以执行算术运算。下面提供了一些我们可以用来执行算术运算的选项:

1.1. 双括号

双括号是在Bash shell中执行基本算术运算的最简单机制,可以使用带或不带前导$的双括号来使用此方法。

语法

((expression))

可以采用四种不同的方法来实现所需的目标。参考下面给出的方法,以了解如何使用双括号机制(假设想将数字10和3相加):

方法1

Sum=$((10+3))

echo "Sum = $Sum"

方法2

((Sum=10+3))

echo "Sum = $Sum"

方法3

Num1=10

Num2=3

((Sum=Num1+Num2))

echo "Sum = $Sum"

方法4

Num1=10

Num2=3

Sum=$((Num1+Num2))

echo "Sum = $Sum"

所有这些方法将输出相同的结果:

Sum = 13

下面的示例演示如何在Bash shell脚本中对运算符使用双括号:

Bash脚本文件:arithmetic-operator.sh

#!/bin/bash

x=6

y=10

echo "x=6, y=10"

echo "Addition of x & y"

echo $(( $x + $y ))

echo "Subtraction of x & y"

echo $(( $x - $y ))

echo "Multiplication of x & y"

echo $(( $x * $y ))

echo "Division of x by y"

echo $(( $x / $y ))

echo "Exponentiation of x,y"

echo $(( $x ** $y ))

echo "Modular Division of x,y"

echo $(( $x % $y ))

echo "Incrementing x by 5, then x= "

(( x += 5 ))

echo $x

echo "Decrementing x by 5, then x= "

(( x -= 5 ))

echo $x

echo "Multiply of x by 5, then x="

(( x *= 5 ))

echo $x

echo "Dividing x by 5, x= "

(( x /= 5 ))

echo $x

echo "Remainder of Dividing x by 5, x="

(( x %= 5 ))

echo $x

执行上面示例代码,得到以下结果:

8f196b19a79b3f4d6f9d38abc2cc6b7c.png

1.2. Let构建

let是Bash的内置命令,它能够执行算术运算。它遵循以下基本语法格式:

let

下面给出一个示例,说明如何在Bash脚本中使用let命令。将下面代码保存到文件:let-operator.sh

#!/bin/bash

x=10

y=6

z=0

echo "Addition"

let "z = $(( x + y ))"

echo "z= $z"

echo "Substraction"

let "z = $((x - y ))"

echo "z= $z"

echo "Multiplication"

let "z = $(( x * y ))"

echo "z = $z"

echo "Division"

let "z = $(( x / y ))"

echo "z = $z"

echo "Exponentiation"

let "z = $(( x ** y ))"

echo "z = $z"

echo "Modular Division"

let "z = $(( x % y ))"

echo "z = $z"

let "x += 5"

echo "Incrementing x by 5, then x= "

echo $x

let "x -= 5"

echo "Decrementing x by 5, then x= "

echo $x

let "x *=5"

echo "Multiply of x by 5, then x="

echo $x

let "x /= 5"

echo "Dividing x by 5, x= "

echo $x

let "x %= 5"

echo "Remainder of Dividing x by 5, x="

echo $x

执行上面示例代码,得到以下结果:

cd498119920868f50a5c18a060a89099.png

1.3. 反引号

在bash脚本中,还可以使用反引号和expr(称为通用表达式求值器)执行算术扩展。

`expr`

类似于let,但是不会将结果保存到变量中,它直接打印结果。与let不同,不需要将表达式用引号引起来。需要在表达式的项目之间使用空格。重要的是要注意,我们应该在命令替换中使用

`expr`

将输出保存到变量中。也可以不使用“反引号”而使用

`expr`

```。

**语法**

```bash

`expr item1 operator item2`

#或者

expr item1 operator item2

下面给出一个示例,说明如何在Bash脚本中使用反引号和expr:

Bash脚本程序文件:backticks.sh,完整代码如下:

#!/bin/bash

#Basic arithmetic using expr

echo "a=10, b=20"

echo "c is the value of addition c=a+b"

a=10

b=20

echo "c= `expr $a + $b`"

执行上面示例代码,得到以下结果:

2db6c16470acce1a55c5af96c3e359e7.png

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值