8.4 运算符优先级
在脚本中,运算执行的顺序被称为优先级: 高优先级的操作会比低优先级的操作先执行。
表 8-1. 运算符优先级(从高到低)
运算符 | 含义 | 注解 |
---|---|---|
var++ var-- | 后缀自增/自减 | C风格运算符 |
++var --var | 前缀自增/自减 | |
! ~ | 按位取反/逻辑取反 | 对每一比特位取反/对逻辑判断的结果取反 |
** | 幂运算 | 算数运算符 |
* / % | 乘, 除, 取余 | 算数运算符 |
+ - | 加, 减 | 算数运算符 |
<< >> | 左移, 右移 | 比特位运算符 |
-z -n | 一元比较 | 字符串是/否为空 |
-e -f -t -x, etc | 一元比较 | 文件测试 |
-lt -gt -le -ge <= >= | 复合比较 | 字符串/整数比较 |
-nt -ot -ef | 复合比较 | 文件测试 |
& | AND(按位与) | 按位与操作 |
^ | XOR(按位异或) | 按位异或操作 |
| | OR(按位或) | 按位或操作 |
&& -a | AND(逻辑与) | 逻辑与, 复合比较 |
|| -o | OR(逻辑或) | 逻辑或, 复合比较 |
? : | if/else三目运算符 | C风格运算符 |
= | 赋值 | 不要与test中的等号混淆 |
*= /= %= += -= <<= >>= &= | 赋值运算 | 先运算后赋值 |
, | 逗号运算符 | 连接一系列语句 |
实际上,你只需要记住以下规则就可以了:
先乘除取余,后加减,与算数运算相似
复合逻辑运算符,&&, ||, -a, -o 优先级较低
优先级相同的操作按从左至右顺序求值
现在,让我们利用运算符优先级的知识来分析一下Fedora Core Linux中的/etc/init.d/functions
文件。
最后更新于