6.5 Shell Arithmetic
shell允许在其内计算表达式,可以通过以下方式使用:((中,let和带-i选项的declare命令中。
只能计算固定长度的整数,而且不会检查溢出,除0可以捕获到且标记为错误。 操作符、优先级、结合性及其值完全同c语言中一样。下面的操作符按优先级分组,优先级按从第到高排列:
id++ id-- 变量后+1,和后-1
++id --id 变量先+1,和先-1
- + 一元减号和加号
! ~ 逻辑非,按位非
** 幂
* / % 乘号,除号,求余数
+ - 加号,减号
<< >> 左移位,右移位
<= >= < > 比较
== != 相等,不等
& 按位与
^ 按位异或
| 按位或
&& 逻辑与
|| 逻辑或
expr ? expr : expr
条件操作符
= *= /= %= += -= <<= >>= &= ^= |= 赋值
expr1 , expr2 逗号表达式
shell变量允许作操作数;参数扩展会在表达式被计算前进行。表达式里的shell变量可以直接使用变量名,而不必按shell变量的引用语法来用。也就是说,shell变量名在表达式里前面不必跟$。 A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax.