5,条件判断

5.1、语法

  • (1)test condition
  • (2)[ condition ]:注意condition前后要有空格

注意: 条件非空即为 true, [ atguigu ]返回 true, [ ] 返回 false。

5.2、常用判断条件

5.2.1、两个字符串之间比较

注意:如果是字符串之间比较,用等号“=”判断相等,用“!=”判断不等,=和!=前后都要有空格

语法说明
[ $a = $b]把变量a和b都作为字符串,来判断这俩变量是否相等
[ $a != $b]把变量a和b都作为字符串,来判断这俩变量是否不相等
[ $a = “ready” ]判断变量a是否等于字符串"ready"

5.2.2、两个整数之间比较

下面的变量$a$b也可以是常量

语法说明
[ $a -eq $b]判断a=b(equal)
[ $a -ne $b]判断a!=b(not equal)
[ $a -lt $b]判断a<b(less than)
[ $a -le $b]判断a<=b(less equal)
[ $a -gt $b]判断a>b(greater than)
[ $a -ge $b]判断a>=b(greater equal)

5.2.3、按照文件权限进行判断

语法说明
[ -r 文件 ]判断文件是否有可读权限
[ -w 文件 ]判断文件是否有可写权限
[ -x 文件 ]判断文件是否有可执行权限

5.2.4、按照文件类型进行判断

语法说明
[ -e 文件 ]判断文件是否存在
[ -f 文件 ]文件存在并且是一个常规的文件(file)
[ -d 文件 ]文件存在并且是一个目录(dirctory)

5.3、使用$?获取条件判断的结果,0:表示true,1:表示false

shell中的条件判断返回值比较特殊,0:表示true1:表示false

[root@jenkins ~]# [ 1 -lt 2 ]
[root@jenkins ~]# echo $?
0
[root@jenkins ~]# [ 1 -gt 2 ]
[root@jenkins ~]# echo $?
1
[root@jenkins ~]#

5.4、案例

(1)整数判断

#使用test语法判断10>9
[root@jenkins ~]# test 10 -gt 9
[root@jenkins ~]# echo $?
0
# 打印出上面的判断结果,输出0,表示结果为真
[root@jenkins ~]# [ 1 -gt 3 ]
[root@jenkins ~]# echo $?
1
[root@jenkins ~]#

(2)文件权限判断

# 使用ll查看一下文件列表,当前root用户,对于1.txt有rw权限
[root@jenkins ~]# ll
total 12
-rw-r--r--  1 root root    0 Sep  3 18:07 1.txt
drwxr-xr-x  2 root root    6 Jul  5 23:15 aashi
-rw-------. 1 root root 1429 Dec 28  2022 anaconda-ks.cfg
-rwxr-xr-x  1 root root   30 Aug  5 23:16 helloworld.sh
-rwxr-xr-x  1 root root  448 Aug 10 10:13 str.sh
[root@jenkins ~]# [ -r 1.txt ]
# 判断当前用户对1.txt是否有r权限,结果为0,表示true
[root@jenkins ~]# echo $?
0
[root@jenkins ~]# [ -x 1.txt ]
[root@jenkins ~]# echo $?
1
# 判断当前用户对1.txt是否有x权限,结果为1,表示false
[root@jenkins ~]#

(3)根据文件类型判断

# 1.txt为普通文件,bash为目录
[root@jenkins ~]# [ -e 3.txt ]
[root@jenkins ~]# echo $?
1
# 判断3.txt是否存在,返回1,表示false
[root@jenkins ~]# [ -e 1.txt ]
[root@jenkins ~]# echo $?
0
# 判断1.txt是否存在,返回0,表示true
[root@jenkins ~]# [ -f 1.txt ]
[root@jenkins ~]# echo $?
0
[root@jenkins ~]# [ -d 1.txt ]
[root@jenkins ~]# echo $?
1
# 判断1.txt是否是目录,返回1,表示false
[root@jenkins ~]# [ -d /root/bash ]
[root@jenkins ~]# echo $?
1
# 判断/root/bash是否是目录,返回0,表示true
[root@jenkins ~]#

(4)多条件判断(&&、||)

多条件判断(&& 表示前一条命令执行成功时, 才执行后一条命令, || 表示上一条命令执行失败后, 才执行下一条命令)

案例1:多条件判断
[root@jenkins ~]# [ 3 -gt 2 ] && [ 2 -gt 1 ]
[root@jenkins ~]# echo $?
0
# 3>2 && 2>1,返回0,表示ture
[root@jenkins ~]# [ 3 -gt 2 ] && [ 2 -lt 1 ]
[root@jenkins ~]# echo $?
1
[root@jenkins ~]# [ 3 -lt 2 ] || [ 3 -lt 2 ]
[root@jenkins ~]# echo $?
1
# 3<2 || 3<2,返回1,表示false
[root@jenkins ~]#
案例2:模仿3元运算符(a?b:c)
[root@jenkins ~]# a=10
[root@jenkins ~]# b=9
[root@jenkins ~]# [ $a -gt $b ] && echo "$a>$b为true" || "$a>$b为false"
10>9为true
# 若a>b,输出a>b为true,否则输出a>b为false,相当于实现了(a?b:c)3元运算符
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值