三,判断表达式
1,文件判断表达式
常用的文件测试操作符 | 说明 |
---|---|
-a/-e 文件 | 文件是否存在 |
-b 文件 | 文件是否存在,且为块文件,如果文件存在且是一个块文件,则为0 |
-c 文件 | 文件是否存在且为字符文件,如果文件存在且是一个字符文件,则结果为0 |
-l 文件 | 文件存在且为链接文件则为1(真) |
-d 文件 | 文件存在且为目录则为1 |
-f 文件 | 文件存在且为普通文件则为1 |
-s 文件 | 文件存在且文件大小不为0则为1 |
-u 文件 | 文件存在,没有设置suid位,则结果为1 |
-r 文件 | 文件存在且可读则为1 |
-w 文件 | 文件存在且可写则为1 |
-x 文件 | 文件存在且可执行则为1 |
f1 -nt f2, nt为newer than | 文件存在且文件f1比文件f2新则为1,根据文件修改时间 |
f1 -ot f2, ot为older than | 文件f1比文件f2旧则为1,根据文件修改时间 |
示例:
a)判断文件是否存在
[ -a lee.sh ] && echo yes || echo no
yes
b)判断文件类型
[ -d /mnt ] && echo /mnt is directory
/mnt is directory
c)判断文件类型是否存在并不为空
[ -x file ] || echo file is not exist or file is empty file
file is not exist or file is empty file
d)判定文件权限
[ -x file ] || echo file is not execute
file is not execute
e)判定文件新旧
[ file -ot file1 ] && echo yes
yes
[!note]
在使用变量作为判断作为判断元素时需要引用变量值
当checkdir未被赋值时
[ -f $chekdir ] && echo yes || echo no yes [ -f "$chekdir" ] && echo yes || echo no no