前面介绍了使用test命令和$?返回值来判断文件的各种各样的属性,其实它还有一个兄弟-中括号,也能实现与test相同的功能,快来看看吧!
-
注意点:中括号前后必须有前后的空格,不然会报错 -
条件测试中使用变量,必须添加双引号
[ -n "$filename" ]
-
可以 使用连接符并行判断:&& ||
# 判断一个文件是否存在,存在就打印ok
[root@blog ~]# [ -f 1.txt ] && echo "ok"
ok
[root@blog ~]# rm 1.txt
rm: remove regular empty file '1.txt'? y
[root@blog ~]# [ -f 1.txt ] && echo "ok"
[root@blog ~]#
1.-f 更严谨的创建文件
比如,我们仅想要在文件不存在的时候创建一个文件
[ -f 2.txt ] && echo "文件已经存在" || touch 2.txt
执行结果
[root@blog ~]# [ -f 2.txt ] && echo "文件已经存在" || touch 2.txt
[root@blog ~]# [ -f 2.txt ] && echo "文件已经存在" || touch 2.txt
文件已经存在
[root@blog ~]#
2.-d 判断目录
判断/tmp目录是否存在
[ -d /tmp ] && echo ok
运行结果:
[root@blog ~]# [ -d /tmp ] && echo ok
ok
[root@blog ~]#
3.双中括号[[ 条件表达式 ]]
-
对权限部分的学习,不要使用root账户,请使用普通账户测试
# 中括号其实和双中括号功能一样
[ -r 3.txt ] && cat 3.txt || echo "没有权限"
[[ -r 3.txt ]] && cat 3.txt || echo "没有权限"
执行结果:
[zounan@blog ~]$ echo "yunweizeichuan" > 3.txt
[zounan@blog ~]$ chmod -r 3.txt
[zounan@blog ~]$ [ -r 3.txt ] && cat 3.txt || echo "没有权限"
没有权限
[zounan@blog ~]$ [[ -r 3.txt ]] && cat 3.txt || echo "没有权限"
没有权限
[zounan@blog ~]$
尾巴
其实中括号条件判断与test所用的选项一样,只是比test更加简洁,根据不同人的习惯,各有侧重,根据自己的习惯选择即可。
推荐阅读:
原文始发于微信公众号(运维贼船):test的兄弟,中括号的条件测试
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/177347.html