算数运算符
只可用在整数运算符
即 + - * 、 % : 加、减、乘、除、取余,其中乘号“*”需要转义。
+= -= *= /= 和C语言中的含义相同。
比较运算符
整数比较运算符
整数比较运算符可以使用 单方括号[] (双方括号[[]] ) 或 双小括号(()) 。推荐使用双方括号[[]]或和结合test使用。
运算符 |
说明 |
举例 |
-eq |
等于返回真 |
[ $num1 -eq $num2 ] [[ $num1 -eq $num2 ]] |
-ne |
不等于返回真 |
[ $num1 -ne $num2 ] [[ $num1 -ne $num2 ]] |
-gt |
大于返回真 |
[ $num1 -gt $num2 ] [[ $num1 -gt $num2 ]] |
-lt |
小于返回真 |
[ $num1 -lt $num2 ] [[ $num1 -lt $num2 ]] |
-ge |
大于等于返回真 |
[ $num1 -ge $num2 ] [[ $num1 -ge $num2 ]] |
-le |
小于等于返回真 |
[ $num1 -le $num2 ] [[ $num1 -le $num2 ]] |
== |
等于返回真,需要使用双小括号(()) |
(( $num1 == $num2 )) |
!= |
不等于返回真,需要使用双小括号(()) |
(( $num1 != $num2 )) |
< |
小于返回真,需要使用双小括号(()) |
(( $num1 < $num2 )) |
<= |
小于等于返回真,需要使用双小括号(()) |
(( $num1 <= $num2 )) |
> |
大于返回真,需要使用双小括号(()) |
(( $num1 > $num2 )) |
>= |
大于等于返回真,需要使用双小括号(()) |
(( $num1 >= $num2 )) |
字符串比较运算符
字符串比较预算符只可以使用 双方括号[[]] 或 单方括号[] ,推荐使用双方括号[[]]。
运算符 |
说明 |
举例 |
= |
字符串相同返回真,两边必须有空格否将作为赋值处理永远返回真。 |
[ $str1 = $str2 ] [[ $str1 = $str2 ]] |
== |
字符串相同返回真 |
[ $str1 == $str2 ] [[ $str1 == $str2 ]] |
!= |
字符串不相同返回真 |
[ $str1 != $str2 ] [[ $str1 != $str2 ]] |
> |
大于返回真 |
[ $str1 \> $str2 ] [[ $str1 > $str2 ]] |
< |
小于返回真 |
[ $str1 \< $str2 ] [[ $str1 < $str2 ]] |
-z |
字符串长度为0返回真 |
[[ -z $str ]] |
-n |
字符串长度不为0返回真 |
[[ -n $str ]] |
区别:
[[]] 所有运算符不需要转义,不会将存在空格的字符串拆分,即可以比较存在空格的字符串。
[] 某些运算符需要转义,会将存在空格的字符串拆分,即不可以比较存在空格的字符串,会报错误。
布尔运算符
只能使用单方括号[],或和test 一起使用。
运算符 |
说明 |
举例 |
! |
取反 |
[ !$check ] test !$check |
-o |
或运算,一个条件返回真则返回真 |
[ $num1 -eq $num2 -o $num3 -eq $num4 ] test $num1 -eq $num2 -o $num3 -eq $num4 |
-a |
与运算,全为真返回真 |
[ $num1 -eq $num2 -a $num3 -eq $num4 ] test $num1 -eq $num2 -a $num3 -eq $num4 |
逻辑运算符
与布尔运算符的区别:使用括号不同,不能和test同时使用。推荐使用双方括号[[]]。
运算符 |
说明 |
举例 |
&& |
逻辑与 |
[[ $num1 -eq $num2 && $num3 -eq
$num4 ]] (( $num1 -eq $num2 && $num3 -eq
$num4 )) |
|| |
逻辑或 |
[[ $num1 -eq $num2 || $num3 -eq $num4 ]] (( $num1 -eq $num2 || $num3 -eq $num4 )) |
! |
逻辑非 |
[[ !$check ]] [ !$check ] |
文件测试运算符
运算符 |
说明 |
举例 |
-f |
是一个常规的文件返回真 |
[ -f $file ] |
-x |
有可执行权限返回真 |
[ -x $file ] |
-d |
是目录返回真 |
[ -d $file ] |
-e |
文件存在返回真 |
[ -e $file ] |
-c |
是字符设备返回真 |
[ -c $file ] |
-b |
是块设备返回真 |
[ -b $file ] |
-w |
文件可写返回真 |
[ -w $file ] |
-r |
文件可读返回真 |
[ -r $file ] |
-L |
是符号链接文件返回真 |
[ -L $var ] |
-nt |
第一个文件比第二个文件新,返回真 |
[ $file1 -nt $file2 ] |
-ot |
第一个文件比第二个文件旧,返回真 |
[ $file1 -ot $file2 ] |