bash条件测试:
条件测试:
test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
测试表达式的类别:
数值比较
字符串测试
文件测试:
-a FILE
-e 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 FILE: 当前有效用户是否为文件属组
双目测试:
FILE1 -ef FILE2: FILE1与FILE2是否指向同一个设备上的相同inode
FILE1 -nt FILE2: FILE1是否新于FILE2;
FILE1 -ot FILE2: FILE1是否旧于FILE2;
组合条件测试:
逻辑运算:
第一种方式:
COMMAND && COMMAND2
COMMAND || COMMAND2
!COMMAND2
[ -e FILE ] && [ -r FILE ]
第二种方式:
EXPRESSION -a EXPRESSION2
EXPRESSION -o EXPRESSION2 或者
!EXPRESSION
必须使用测试命令:
#[ -z "$hostName" -o "$hostName" == "localhost.localdomain" ] && hostname www.manage.com
#[ -f /bin/cat -a -x /bin/cat ] && cat /etc/fstab