1.按照文件类型进行判断
判断文件是否存在的两种方式:
1.1 使用test进行判断
###判断文件/root/score.txt是否存在
[root@wenhaijin ~]# test -e /root/score.txt
###打印上一条语句的输出结果,0表示正确执行,否则执行不正确
[root@wenhaijin ~]# echo $?
0
[root@wenhaijin ~]#
1.2 使用”中括号”进行判断(中括号里面有空格)
###该语句等价于上面的test语句(注意中括号里面有空格)
[root@wenhaijin ~]# [ -e /root/score.txt ]
这两种判断语句的选项如下:
判断目录/root是否存在,存在打印yes,否则打印no
[root@wenhaijin ~]# test -d /root && echo "yes" || echo "no"
yes
###中括号里面是有空格的
[root@wenhaijin ~]# [ -f /root/score.txt ] && echo "yes" || echo "no"
yes
[root@wenhaijin ~]#
2. 按照文件权限进行判断
###判断文件是否具有读、写、可执行权限
[root@wenhaijin ~]# [ -r /root/score.txt ]&& echo "yes" || echo "no"
yes
[root@wenhaijin ~]# [ -w /root/score.txt ]&& echo "yes" || echo "no"
yes
[root@wenhaijin ~]# [ -x /root/score.txt ]&& echo "yes" || echo "no"
no
[root@wenhaijin ~]#
3. 两个文件之间的比较
[root@wenhaijin ~]# ls
91yunserverspeeder score.txt tcp_wmem~
91yunserverspeeder.tar.gz serverspeeder-all.sh x1.sh
###判断文件/root/score.txt是否比文件/root/tcp_wmem~新
[root@wenhaijin ~]# [ /root/score.txt -nt /root/tcp_wmem~ ] && echo "yes" || echo "no"
yes
###判断文件/root/score.txt是否比文件/root/tcp_wmem~旧
[root@wenhaijin ~]# [ /root/score.txt -ot /root/tcp_wmem~ ] && echo "yes" || echo "no"
no
###判断两个文件是不是采用硬链接形式创建的
[root@wenhaijin ~]# [ /root/score.txt -ef /root/tcp_wmem~ ] && echo "yes" || echo "no"
no
###创建硬链接
[root@wenhaijin ~]# ln /root/score.txt /tmp/sco.txt
###查看i节点
[root@wenhaijin ~]# ls -i score.txt
1058319 score.txt
###查看i节点
[root@wenhaijin ~]# ls -i /tmp/sco.txt
1058319 /tmp/sco.txt
###判断两个文件是不是采用硬链接形式创建的
[root@wenhaijin ~]# [ /root/score.txt -ef /tmp/sco.txt ] && echo "yes" || echo "no"
yes
[root@wenhaijin ~]#
4. 两个整数之间的比较
[root@wenhaijin ~]# [ 23 -gt 22 ] && echo yes || echo no
yes
[root@wenhaijin ~]# [ 23 -lt 22 ] && echo yes || echo no
no
[root@wenhaijin ~]#
5.字符串的判断
[root@wenhaijin ~]# name=wenhaijin
###字符串name为空返回yes,不为空返回no
[root@wenhaijin ~]# [ -z "$name" ] && echo yes || echo no
no
[root@wenhaijin ~]# [ -z "$nameaaa" ] && echo yes || echo no
yes
[root@wenhaijin ~]#
[root@wenhaijin ~]# aa=abc
[root@wenhaijin ~]# bb=abc
[root@wenhaijin ~]# [ "$aa" == "$bb" ] && echo yes || echo no
yes
6.多重条件判断
[root@wenhaijin ~]# aa=11
###aa存在并且aa大于23,则打印yes,否则打印no
[root@wenhaijin ~]# [ -n "$aa" -a "$aa" -gt 23 ] && echo yes || echo no
no
[root@wenhaijin ~]# aa=25
[root@wenhaijin ~]# [ -n "$aa" -a "$aa" -gt 23 ] && echo yes || echo no
yes