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
执行上面示例代码,得到以下结果:
1.2. Let构建
let
是Bash的内置命令,它能够执行算术运算。它遵循以下基本语法格式:
let <arithmetic expression>
下面给出一个示例,说明如何在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
执行上面示例代码,得到以下结果:
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`"
执行上面示例代码,得到以下结果:
上一篇:Bash休眠(sleep命令)
下一篇:Bash If语句
扫描二维码
程序员编程王