(二)Shell条件测试

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

注:正则比对最好用[[]]。

发布了11 篇原创文章 · 获赞 11 · 访问量 5967

猜你喜欢

转载自blog.csdn.net/nmb_jiang/article/details/104662253