05-shell编程-比较判断

本文详细介绍了如何在LinuxShell中使用各种命令判断文件/目录的存在性、权限、大小、软链接状态,以及进行字符串和整数的比较,提供了一套实用的Shell操作技巧。
摘要由CSDN通过智能技术生成

一、判断文件/目录是否存在

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  *  ]   #是否不等于

[[     *   >    *    ]]       #是否大于

[[     *   <    *    ]]       #是否小于

[[     *   >=    *    ]]       #是否大于等于

[[     *   <=    *    ]]       #是否小于等于

[[     *   =    *    ]]       #是否等于

[[     *   !=    *    ]]       #是否不等于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心机の之蛙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值