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
== (等于) 比较两个数字,如果相同则返回 true。 [ $a == $b ] 将返回 false。
!= (不等于) 比较两个数字,如果不同则返回 true。 [ $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
广告