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