条件判断详解

本文详细介绍了Linux中test命令的使用,包括文件类型判断、文件权限检查、文件比较、整数比较、字符串判断及多重条件判断。通过实例演示了test命令在各种场景下的应用,如判断文件是否存在、是否具有写权限、是否为硬链接,以及进行整数和字符串的比较。文章还展示了如何结合逻辑运算符进行复杂的条件判断。
摘要由CSDN通过智能技术生成

1 按照文件类型进行判断
我们先来看看test可以进行哪些文件类型的判断:

 [root@localhost ~]# [ -e /root/sh/ ]
[root@localhost ~]# echo $?
0
#判断结果为0,/root/sh/目录是存在的
[root@localhost ~]# [ -e /root/test ]
[root@localhost ~]# echo $?
1
#在/root/下并没有test文件或目录,所以“$?”的返回值为非零 还记得多命令顺序执行的“&&”和“||”吗?我们可以再判断一下/root/sh/是否是目录:
[root@localhost ~]# [ -d /root/sh ] && echo "yes" || echo "no"
#第一个判断命令如果正确执行,则打印“yes”,否则打印“no”

2 按照文件权限进行判断
test是非常完善的判断命令,还可以判断文件的权

 [root@localhost ~]# ll student.txt
-rw-r--r--. 1 root root 97 6月 7 07:34 student.txt
[root@localhost ~]# [ -w student.txt ] && echo "yes" || echo "no"
yes
#判断文件是拥有写权限的

3两个文件之间进行比较
通过表12-7来看看如何进行两个文件之间的比较:

 我们一直很苦恼,到底该如何判断两个文件是否是硬链接呢?这时test就派上用场了:
[root@localhost ~]# ln /root/student.txt /tmp/stu.txt
#创建个硬链接吧
[root@localhost ~]# [ /root/student.txt -ef /tmp/stu.txt ] && echo "yes" || echo "no"
yes
#用test测试下,果然很有用

4 两个整数之间比较

举个例子:
[root@localhost ~]# [ 23 -ge 22 ] && echo "yes" || echo "no"
yes
#判断23是否大于等于22,当然是了
[root@localhost ~]# [ 23 -le 22 ] && echo "yes" || echo "no"
no
#判断23是否小于等于22,当然不是了 

5 字符串的判断

 举个例子:
[root@localhost ~]# name=sc
#给name变量赋值
[root@localhost ~]# [ -z "$name" ] && echo "yes" || echo "no"
no
#判断name变量是否为空,因为不为空,所以返回no 再来看看如何判断两个字符串相等:
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
#给变量aa和变量bb赋值
[root@localhost ~]# [ "$aa" == "bb" ] && echo "yes" || echo "no"
no
#判断两个变量的值是否相等,明显不相等,所以返回no

6 多重条件判断

举个例子:
[root@localhost ~]# aa=11
#给变量aa赋值
[root@localhost ~]# [ -n "$aa" -a "$aa" -gt 23 ] && echo "yes" || echo "no"
no
#判断变量aa是否有值,同时判断变量aa的是否大于23
#因为变量aa的值不大于23,所以虽然第一个判断值为真,返回的结果也是假
要想让刚刚的判断式返回真,需要给变量aa重新赋个大于23的值:
[root@localhost ~]# aa=24
[root@localhost ~]# [ -n "$aa" -a "$aa" -gt 23 ] && echo "yes" || echo "no"
yes
再来看看逻辑非是什么样子的:
[root@localhost ~]# [ ! -n "$aa" ] && echo "yes" || echo "no"
no
#本来“-n”选项是变量aa不为空,返回值就是真。
#加入!之后,判断值就会取反,所以当变量aa有值时,返回值是假
注意:“!”和“-n”之间必须加入空格,否则会报错的。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值