shell运算符主要有:比较运算符(用于整数比较)、字符串运算符(用于字符串测试)、文件操作运算符(用于文件测试)、算术运算符、逻辑运算符、位运算符、自增自减运算符等。


测试结构:

方法一: test expression

方法二:[ expression ] (注意:中括号左右的空格)

一、整数比较

整数测试符:

-eq等于

-gt大于

-lt小于

-ge大于等于

-le小于等于

-ne不等于

二、字符串测试

字符串测试符:

-z "string"为空返回真,否则为假

-n "string"非空返回真,否则为假

"string1" = "string2"相同返回真,否则为假

"string1" != "string2"不相同返回真,否则为假

"string1" > "string2"按字典排序,string1在string2之前,返回真,否则为假

"string1" < "string2"按字典排序,string1在string2之后,返回真,否则为假

注意:[ "str1" \> "str2 ] (需要进行转义)

[["str1" \> "str2 ]] (不需要进行转义)

三、文件测试

文件测试符:

-b FILE块文件返回真

-c FILE字符设备文件返回真

-d FILE目录文件返回真

-e FILE存在返回真

-f FILE普通文件返回真

-x FILE可执行文件返回真

-w FILE可写返回真

-r FILE可读返回真

-l FILE链接文件返回真

-p FILE管道文件返回真

-s FILE文件大小不为0返回真

-S FILEsocket文件返回真

-g FILE文件设置了SGID时返回真

-u FILE文件设置了SUID时返回真

-k FILE文件设置了sticky属性时返回真

-G FILE文件属于有效的用户组时返回真

-O FILE文件属于有效的用户时返回真

FILE1 -nt FILE2FILE1比FILE2新时返回真

FILE1 -ot FILE2FILE1比FILE2旧时返回真

四、算术运算符(结合shell内建命令let使用)

常规算术运算符

+、-、*、/、%、**

复合算术运算符

+=、-=、*=、/=、%=

其它算数运算符

1)$[]和$(( ))

2)expr命令

高精度计算(bc命令)

eg. bc <<< "scale=2;111/222;"

echo "scale=2;111/222;" | bc

五、逻辑运算

逻辑测试符:

!expression逻辑非

expression1 -a expression2逻辑与,同时为真,测试结果为真

expression1 -o expression2逻辑或,只要有一个为真,测试结果为真

逻辑运算符:

! 逻辑非

&&逻辑与

||逻辑或

六、位运算

<<左移运算

>>右移运算

& 按位与运算

| 按位或运算

^ 按位异或运算

~ 按位非运算

七、自增自减

++自增

--自减

注意:操作对象只能是变量,不能是常数或表达式