test命令位于/usr/bin下
格式:
/usr/bin/test 表达式
其执行后返回表达式逻辑结果,即true或false
其典型应用是在if分支中使用。
例如:
if /usr/bin/test -z "$a"
其实 /usr/bin/test是可以省略的,上面的语句和相面的等价:
if [ -z "$a" ]
还有一种等价形式如下:
if /usr/bin/test [ -z "$a" ]
另外,使用"[[ ... ]]"替代"[ ... ]"剋组织脚本中许多逻辑错误。
下面是一种比较简化的形式,可以省略if:
a=1
b=2
[ "$a" -ne "$b" ] && "$a 不等于 $b"
本例将输出“1不等于2”
"(( ... ))" 在今sing数学操作也可以实现test功能。例如:
#!/bin/bash
(( 5 > 9))
echo "$?" #输出1
(( 5 > 2 ))
echo "$?" #输出0
对文件测试的操作如下:
-e 文件存在
-a 文件存在,与-e效果一样。但是已经被弃用,推荐不用。
-f 文件是一个普通文件,非设备文件或目录
-s 文件存在且不为空
-d 文件是个目录
-b 文件是个快文件
-p 文件是个管道
-L 文件是个符号链接,软链接
-S 是个sock文件
-t 关联到一个终端设备的文件描述符
-r 文件具有读权限
-w 文件具有写权限
-x 文件具有执行权限
-g 设置了sgid
-u 设置suid
-k 设置了粘贴位
-O 是文件的所有者
-G 文件的gid和执行者的gid相同
-N 从文件最后被阅读到现在为止,是否被修改。