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

  • 简述

    Bourne Shell 支持 wing 算术运算符。
    假设变量 a 容纳 10 和变量 b 持有 20 然后 -
    操作符 描述 例子
    &plus (Addition) 在运算符的任一侧添加值 `expr $a &plus $b` 将给出 30
    - (Subtraction) 从左手操作数中减去右手操作数 `expr $a - $b` 将给出 -10
    * (Multiplication) 将运算符两侧的值相乘 `expr $a \* $b` 将给出 200
    / (Division) 将左手操作数除以右手操作数 `expr $b / $a` 将给出 2
    % (Modulus) 将左手操作数除以右手操作数并返回余数 `expr $b % $a` 将给出 0
    = (Assignment) 在左操作数中分配右操作数 a = $b 会将 b 的值赋给 a
    == (Equality) 比较两个数字,如果两者相同则返回真。 [ $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 声明是一个决策声明,在下一章中已经解释过。