Linux Shell

算数运算符

只可用在整数运算符

即 + - * 、 % : 加、减、乘、除、取余,其中乘号“*”需要转义。

+= -= *= /= 和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 ]

 



转载请指明出处!http://www.miselehe.com/article/view/127