关键词: 数值测试 字符串测试 文件测试
测试命令有三种方式:
test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
注意:EXPRESSION前后有空白字符
bash的测试类型
数值测试
-gt: 是否大于
-ge:是否大于等于
-lt: 是否小于
-le: 是否小于等于
-eq: 是否等于
-ne: 是否不等于
字符串测试
==: 是否等于
>: 是否大于
<: 是否小于
!= : 是否不等于
~=: 左侧字符串是否能够被右侧的PATTERN所匹配到
Note:此种表达式一般用于[[]]中
-z "STRING" : 测试字符串是否为空,空则为真,不空为假
-n "STRING": 测试字符串是不不空,不空则为真,空则为假
Note: 字符串比较时用到的操作数都应该使用引号
文件测试
存在性测试
-a FILE
-e FILE: 文件存在性测试,存在为真,否则为假
存在性及类别测试
-b FILE: 是否存在且为块设备文件
-c FILE: 是否存在且为字符设备文件
-d FILE: 是否存在且为目录文件
-f FILE : 是否存在且为普通文件
-h FILE 或 -L FILE: 是否存在且为符号链接文件
-p FILE: 是否存在且为管道文件
-S FILE: 是否存在且为套接字文件
文件权限测试
-r FILE : 是否存在且可读
-w FILE : 是否存在且可写
-x FILE : 是否存在且可执行
文件特殊权限测试:
-g FILE: 是否存在且拥有sgid权限
-u FILE: 是否存在且拥有suid权限
-k FILE:是否存在且拥有sticky权限
文件大小测试
-s FILE: 是否存在且非空
文件是否打开
-t fd: fd表示文件描述符是否已经打开且与某终端相关
-N FILE:文件自动上次被读取之后是否被修改过
-O FILE: 当前用户是否为文件的属主
-G FIEL: 当前用户是否为文件属组
双目测试
FILE1 -ef FILE2 : FILE1 与 FILE2 是否指向同一个设备上的inode
FILE1 -nt FILE2 : FILE1 是否 新于 FILE2
FILE1 -ot FILE2 : FILE1 是否 旧于 FILE2