一、判断文件/目录是否存在
1,判断文件是否存储在
[root@gong ~]# [ -f /etc/hosts ] && echo "它存在" || echo "它不存在"
它存在
[root@gong ~]# [ -f /etc/hostssssss ] && echo "它存在" || echo "它不存在"
它不存在
2,判断目录是否存在
[root@gong ~]# [ -d /etc/ ] && echo "它存在" || echo "它不存在"
它存在
[root@gong ~]# [ -d /etcccc/ ] && echo "它存在" || echo "它不存在"
它不存在
二、判断是否有权限
1,执行权限
[root@gong ~]# [ -x /etc/hosts ] && echo "有执行权限" || echo "没有执行权限"
没有执行权限
2,读权限
[root@gong ~]# [ -r /etc/hosts ] && echo "有读权限" || echo "没有读权限"
有读权限
3,写/编辑权限
[root@gong ~]# [ -w /etc/hosts ] && echo "有编辑权限" || echo "没有编辑权限"
有编辑权限
4,判断文件大小
判断文件大小是否>0,;
[root@gong ~]# [ -s /etc/hosts ] && echo "有内容存在" || echo "没有内容存在"
有内容存在
三、是否存在
判断是否存在,不论是文件还是目录;
[root@gong ~]# [ -e /etc/hosts ] && echo "存在" || echo "不存在"
存在
[root@gong ~]# [ -e /etc/ ] && echo "存在" || echo "不存在"
存在
四、判断是否为软连接
[root@gong ~]# ln -s /etc/hosts /root/xinjizhiwa
[root@gong ~]# ll
总用量 0
lrwxrwxrwx. 1 root root 10 3月 21 14:38 xinjizhiwa -> /etc/hosts
[root@gong ~]# [ -L /root/xinjizhiwa ] && echo "是软连接" || echo "不是软连接"
是软连接
五、文件时间比较
1,时间比对-谁最新
[root@gong ~]# touch 1.txt
[root@gong ~]# touch 2.txt
[root@gong ~]# [ 1.txt -nt 2.txt ]
[root@gong ~]# [ 1.txt -nt 2.txt ] && echo "yes" || echo "no"
no
2,时间比对-谁更老
[root@gong ~]# [ 1.txt -ot 2.txt ] && echo "yes" || echo "no"
yes
六、对比字符串
1,对比两个字符串是否相等
[root@gong ~]# n=xinjizhiwa
[root@gong ~]# [ "$n" = "xjzw" ] && echo "相等" || echo "不相等"
不相等
2,对比两个字符串是否不相等
[root@gong ~]# [ "$n" != "xjzw" ] && echo "不相等" || echo "相等"
不相等
3,字符串是否为空
场景:判断用户是否什么都没有输入;
[root@gong ~]# n=xinjizhiwa
[root@gong ~]# [ -z "$n" ] && echo "是空的" || echo "不是空的"
不是空的
· 设置一个空变量
[root@gong ~]# unset m
· 判断是否为空
[root@gong ~]# [ -z "$m" ] && echo "是空的" || echo "不是空的"
是空的
[root@gong ~]# [ -n "$m" ] && echo "非空的" || echo "是空的"
是空的
七、整数比较大小
1,大于
[root@gong ~]# [ 3 -gt 1 ] && echo "成立" || echo "不成立"
成立
[root@gong ~]# [ 3 -gt 6 ] && echo "成立" || echo "不成立"
不成立
不能用小数比较哦
[root@gong ~]# [ 3.5 -gt 6 ] && echo "成立" || echo "不成立"
-bash: [: 3.5: 期待整数表达式
不成立
另一种方式表示大于,不建议大家使用;
[root@gong ~]# [[ 3 > 6 ]] && echo "成立" || echo "不成立"
不成立
[root@gong ~]# [[ 6 > 6 ]] && echo "成立" || echo "不成立"
不成立
[root@gong ~]# [[ 6 >= 6 ]] && echo "成立" || echo "不成立"
-bash: 条件表达式中有语法错误
-bash: `6' 附近有语法错误
2,小于
[root@gong ~]# [ 3 -lt 6 ] && echo "成立" || echo "不成立"
成立
[root@gong ~]# [ 3 -lt 1 ] && echo "成立" || echo "不成立"
不成立
3,等于
[root@gong ~]# [ 3 -eq 1 ] && echo "成立" || echo "不成立"
不成立
[root@gong ~]# [ 3 -eq 3 ] && echo "成立" || echo "不成立"
成立
4,大于等于
[root@gong ~]# [ 3 -ge 3 ] && echo "成立" || echo "不成立"
成立
5,小于等于
[root@gong ~]# [ 3 -le 3 ] && echo "成立" || echo "不成立"
成立
6,不等于
[root@gong ~]# [ 3 -ne 3 ] && echo "成立" || echo "不成立"
不成立
八、本节总结
1,是否存在
-f #文件是否存在
-d #目录是否存在
-e #文件或目录是否存在
-x #是否有执行权限
-r #是否有读权限
-w #是否有写编辑权限
-s #大小是否为0;
-nt #文件目录比较,时间是否为新
-ot #文件目录比较,时间是否为旧
2,字符串对比
= #字符串是否相等
!= #字符串是否不相等
-z #字符串是否为空
#####################
unset 变量 #变量设置为空
3,整数比较大小
[ * eq * ] #两边是否相等
[ * gt * ] #是否大于
[ * lt * ] #是否小于
[ * ge * ] #是否大于等于
[ * le * ] #是否小于等于
[ * ne * ] #是否不等于
[[ * > * ]] #是否大于
[[ * < * ]] #是否小于
[[ * >= * ]] #是否大于等于
[[ * <= * ]] #是否小于等于
[[ * = * ]] #是否等于
[[ * != * ]] #是否不等于