Linux Shell运算符
Shell中的运算符可分为算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符
1.算术运算符
a=2, b=1
Operator | Description | Example |
+ | 加法 | `expr $a + $b` # 3 |
- | 减法 | `expr $a - $b` # 1 |
* | 乘法 | `expr $a \* $b` # 2, *需转义 |
/ | 除法 | `expr $a / $b' # 2 |
% | 取余 | `expr $a % $b' # 0 |
= | 赋值 | name=value |
== | 相等比较 | [ $a == $b ] # false |
!= | 不等比较 | [ $a != $b ] # true |
注意:条件表达式要放在方括号之间,并且要有空格,例如 [$a==$b] 是错误的,必须写成 [ $a == $b ]
2.关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字
a=1, b=2
Operator | Description | Example |
-eq | 判断是否相等 | [ $a -eq $b ] # false |
-ne | 是否不相等 | [ $a -ne $b ] # true |
-gt | 是否大于 | [ $a -gt $b ] # false |
-lt | 是否小于 | [ $a -lt $b ] # true |
-ge | 是否大于等于 | [ $a -ge $b ] # false |
-le | 是否小于等于 | [ $a -le $b ] # true |
3.布尔运算符
Operator | Description | Example |
! | 非运算 | [ ! false ] 返回 true |
-o | 或运算 | [ true -o false ] 返回true |
-a | 与运算 | [ true -a false] 返回false |
4.字符串运算符
a=abc, b=def
Operator | Description | Example |
= | 是否相等 | [ $a = $b ] # false |
!= | 是否不相等 | [ $a != $b ] # true |
-z | 长度是否为0 | [ -z $a ] # false |
-n | 长度是否不为0 | [ -n $a ] # true |
str | 是否为空 | [ $a ] # false |
5.文件测试运算符
文件测试运算符用于检测 Unix 文件的各种属性
Operator | Description | Example |
-b file | 是否是块设备文件 | [ -b $file ] |
-c file | 是否是字符设备文件 | [ -c $file ] |
-d file | 是否是目录 | [ -d $file ] |
-f file | 是否是普通文件(既不是目录,也不是设备文件) | [ -f $file ] |
-g file | 是否设置了 SGID 位 | [ -g $file ] |
-k file | 是否设置了粘着位(Sticky Bit) | [ -k $file ] |
-p file | 是否是具名管道 | [ -p $file ] |
-u file | 是否设置了 SUID 位 | [ -u $file ] |
-r file | 是否可读 | [ -r $file ] |
-w file | 是否可写 | [ -w $file ] |
-x file | 是否可执行 | [ -x $file ] |
-s file | 是否不为空(文件大小是否大于0), 不为空返回true | [ -s $file ] |
-e file | 文件(包括目录)是否存在 | [ -e $file ] |