Unix / Linux - Shell 算术运算符示例

Bourne Shell 支持以下算术运算符。

假设变量a为10,变量b为20 −

运算符 说明 示例
+ (加法) 在运算符的两边添加值 `expr $a +; $b` 将给出 30
- (减法) 从左手操作数中减去右手操作数 `expr $a - $b` 将给出 -10
* (乘法) 将运算符两边的值相乘 `expr $a \* $b` 将给出 200
/(除法) 将左手操作数除以右手操作数 `expr $b / $a` 将给出 2
%(模数) 左手操作数除以右手操作数并返回余数 `expr $b % $a` 将给出 0
= (赋值) 在左操作数中分配右操作数 a = $b 会将 b 的值赋给 a
== (Equality) 比较两个数,如果相同则返回true。 [ $a == $b ] 会返回 false。
!= (Not Equality) 比较两个数,如果不同则返回真。 [ $a != $b ] 将返回 true。

了解所有条件表达式都应该放在方括号内并在它们周围留有空格非常重要,例如 [ $a == $b ] 是正确的,而 [$ a==$b] 不正确。

所有的算术计算都是用长整型来完成的。


示例

这是一个使用所有算术运算符的例子 −

#!/bin/sh

a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b`
echo "a * b : $val"

val=`expr $b / $a`
echo "b / a : $val"

val=`expr $b % $a`
echo "b % a : $val"

if [ $a == $b ]
then
   echo "a is equal to b"
fi

if [ $a != $b ]
then
   echo "a is not equal to b"
fi

上面的脚本会产生下面的结果 −

a + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a is not equal to b

使用算术运算符需要注意以下几点 −

  • 运算符和表达式之间必须有空格。 例如,2+2 是不正确的; 应该写成 2 + 2。

  • 完整的表达式应该放在' '之间,称为引号。

  • 您应该在 * 符号上使用 \ 进行乘法运算。

  • if...then...fi 语句是决策语句,已在下一章中解释。

unix_basic_operators.htm