Linux Shell运算符总结

Linux Shell运算符

Shell中的运算符可分为算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符

1.算术运算符

a=2, b=1

OperatorDescriptionExample
+加法`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

OperatorDescriptionExample
-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.布尔运算符

OperatorDescriptionExample
!非运算[ ! false ] 返回 true
-o或运算[ true -o false ] 返回true
-a与运算[ true -a false] 返回false

4.字符串运算符

 a=abc, b=def

OperatorDescriptionExample
=是否相等[ $a = $b ] # false
!=是否不相等[ $a != $b ] # true
-z长度是否为0[ -z $a ] # false
-n长度是否不为0[ -n $a ] # true
str是否为空[ $a ] # false

5.文件测试运算符

文件测试运算符用于检测 Unix 文件的各种属性

OperatorDescriptionExample
-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 ] 

相关推荐