Shell中的条件判断

Shell中的条件判断

  1. 语法
    1)test condition
    2)[ condition ]
    注意:
  • condition前后要有空格
  • 条件非空返回true,[ abc ]返回true,[ ]返回false

1. test condition的使用

[root@localhost ~]# a=hi
[root@localhost ~]# echo $a
hi
[root@localhost ~]# test $a = hi
[root@localhost ~]# echo $?
0
[root@localhost ~]# test $a = hello
[root@localhost ~]# echo $?
1
[root@localhost ~]# test $a=hi
[root@localhost ~]# echo $?
0

2. [ condition ]的使用

[ condition ] condition前后要有空格
[ ]返回false
添加非空为true,[ abc ] 返回true

2.1 [ condition ]的使用

[root@localhost ~]# echo $a
hi
[root@localhost ~]# [ $a = hi ]
[root@localhost ~]# echo $a
hi
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ $a = hell ]
[root@localhost ~]# echo $?
1

2.2 [ ]返回false

[root@localhost ~]# [ ]
[root@localhost ~]# echo $?
1

2.3 [ abc ]返回true

[root@localhost ~]# [ abc ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# a=hi
[root@localhost ~]# echo $a
hi
[root@localhost ~]# [ $a = hi ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ $a=hi ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ $a=hello ]
[root@localhost ~]# echo $?
0

从上面可以看出来,变量a的值为hi,[ $a=hi ]和[ $a=hello ]都是true,因为没有condition没有加空格,所以返回true。

3. 常用判断条件

3.1 两个字符串直接的比较

符号描述
=判断相等
!=判断不想等
[root@localhost ~]# a=hi
[root@localhost ~]# echo $a
hi
[root@localhost ~]# [ $a = hi ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ $a != hi ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ $a != hello ]
[root@localhost ~]# echo $?
0

3.2 两个整数之间比较

符号描述
-lt小于(less than)
-eq等于(equal)
-gt大于(grather than)
-ne不等于(Not equal)
-le小于等于(less equal)
-ge大于等于(grather equal)
[root@localhost ~]# [ 5 gt 3 ]
-bash: [: gt: 期待二元表达式
[root@localhost ~]# [ 5 -gt 3 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 5 -lt 6 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 5 -ne 4 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 5 > 3 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 5 >= 3 ]
-bash: [: 5: 期待一元表达式
[root@localhost ~]# [ 5 = 3 ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ 5 != 3 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 5 -ge 3 ]
[root@localhost ~]# echo $?
0

3.3 按照文件权限进行判断

符号描述
-r有读的权限(read)
-w有写的权限(write)
-x有执行的权限(execute)
[root@localhost home]# ll
总用量 0
-rw-r--r--. 1 root root  0 71 00:15 a.sh
drwxr-xr-x. 2 root root 71 629 23:58 jiaoben
[root@localhost home]# [ -x a.sh ]
[root@localhost home]# echo $?
1
[root@localhost home]# [ -r a.sh ]
[root@localhost home]# echo $?
0
[root@localhost home]# [ -w a.sh ]
[root@localhost home]# echo $?
0
[root@localhost home]# [ -r /home/a.sh ]
[root@localhost home]# echo $?
0
[root@localhost home]# [ -r /home/b.sh ]
[root@localhost home]# echo $?
1

3.4 按照文件类型进行判断

符合描述
-f文件存在并且是一个常规的文件(file)
-e文件存在(existence)
-d文件存在并且是一个目录(directory)
[root@localhost home]# pwd
/home
[root@localhost home]# ll
总用量 0
-rw-r--r--. 1 root root  0 71 00:15 a.sh
drwxr-xr-x. 2 root root 71 629 23:58 jiaoben
[root@localhost home]# [ -d jiaoben ]
[root@localhost home]# echo $?
0
[root@localhost home]# [ -d study ]
[root@localhost home]# echo $?
1
[root@localhost home]# [ -f a.sh ]
[root@localhost home]# echo $?
0
[root@localhost home]# [ -f b.sh ]
[root@localhost home]# echo $?
1
[root@localhost home]# [ -e b.sh ]
[root@localhost home]# echo $?
1
[root@localhost home]# [ -e /home/a.sh ]
[root@localhost home]# echo $?
0

4. 多条件判断

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

[root@localhost home]# [ 5 > 3 ] && echo success || echo fail
success
[root@localhost home]# [ a ] && [ ] || echo aaa
aaa
[root@localhost home]# [ ] && echo ok || echo notok
notok
[root@localhost home]# [ 5 > 3 ] && echo "5 > 3" || echo "5 < 3"
5 > 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值