1.文件测试
常用文件测试操作符号 | 说明 |
---|---|
-f | 文件存在且为普通文件则为真 |
-d | 文件存在且为目录则为真 |
-s | 文件存在且为文件大小不为0则为真 |
-e | 文件存在则为真 |
-r | 文件存在且可读则为真 |
-w | 文件存在且可写则为真 |
-x | 文件存在且可执行则为真 |
f1 -nt f2 | 文件f1比文件f2新则为真 |
f1 -ot f2 | 文件f1比文件f2旧则为真 |
注:以上操作符用test命令和[[]]、[]几乎是通用的,可以执行man test查看更多操作符。
2.整数比较
在[]和test用的整数比较操作符号 | 在[[]]、(())中使用的比较符 | 说名 |
---|---|---|
-gt | > | 大于 |
-eq | ==或= | 等于 |
-ne | != | 不等于 |
-ge | >= | 大于等于 |
-lt | < | 小于 |
-le | <= | 小于等于 |
说明:1、<符号和>符号和在[]中使用需要转义,因为在shell中有重定向的意思。(在整数的比较中结果可能会不对)
2、=和!=在[]中使用不需要转义
3.逻辑连接符
在[]和test用的逻辑连接符 | 在[[]]中使用的逻辑连接符 | 说名 |
---|---|---|
-a | && | 与,只有两端都为真时才为真 |
-o | ll | 或,任意一端为真就为真 |
! | ! | 非,相反则为真 |
注:推荐[]中用-a,-o,!;[[]]中使用&&,ll,!,多个[]、[[]]之间或者任意混合中间逻辑操作符都是&&或ll
4.字符串测试
常用字符串测试操作符 | 说明 |
---|---|
-z “字符串” | 长度为0则为真 |
-n “字符串” | 长度不为0则为真 |
“字符串1” = “字符串2” | 字符串1等于字符串2则为真,可以用==代替= |
“字符串1” != “字符串2” | 字符串1不等于字符串2则为真,不可以用!==代替= |
注:字符串操作符必须用"",比较符号两边必须有空格
5.正则比对
[root@CentOS7 ~]# num=a123
[root@CentOS7 ~]# [[ "$num" =~ ^[a-z]+[0-9].*$ ]];echo $?
0
注:正则比对最好用[[]]。