# 条件判断
1.基本语法
[ condition ]
(注意:condition前后要有空格)
注意:条件非空即为true,[ bigdata ]
返回true,[]
返回false。
2.常用判断条件
(1)两个整数之间比较
=
字符串比较
-lt
小于(less than) -le
小于等于(less equal)
-eq
等于(equal) -gt
大于(greater than)
-ge
大于等于(greater equal) -ne
不等于(Not equal)
(2)按照文件权限进行判断
-r
有读的权限(read) -w
有写的权限(write)
-x
有执行的权限(execute)
(3)按照文件类型进行判断
-f
文件存在并且是一个常规的文件(file)
-e
文件存在(existence) -d
文件存在并是一个目录(directory)
3.案例实操
(1)23是否大于等于22
[bigdata@hadoop01 datas]$ [23 -ge 22]
-bash: [23: 未找到命令 #condition前后要有空格</span>
[bigdata@hadoop01 datas]$ [ 23 -ge 22 ]
[bigdata@hadoop01 datas]$ echo $? #最后一次执行的命令的返回状态:0代表正确执行,非0代表执行不正确
0
[bigdata@hadoop01 datas]$ [ 23 -le 22 ]
[bigdata@hadoop01 datas]$ echo $? #最后一次执行的命令的返回状态:0代表正确执行,非0代表执行不正确
1
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
(2)helloworld.sh是否具有写权限
[bigdata@hadoop01 datas]$ [ -w helloworld.sh ]
[bigdata@hadoop01 datas]$ echo $?
0
1
2
3
2
3
(3)/home/bigdata/cls.txt目录中的文件是否存在
[bigdata@hadoop01 datas]$ [ -e /home/bigdata/cls.txt ]
[bigdata@hadoop01 datas]$ echo $?
1
[bigdata@hadoop01 datas]$ [ -e /home/bigdata/banzhang.txt ]
[bigdata@hadoop01 datas]$ echo $?
0
1
2
3
4
5
6
2
3
4
5
6
(4)多条件判断(&&
表示前一条命令执行成功时,才执行后一条命令,||
表示上一条命令执行失败后,才执行下一条命令)
[bigdata@hadoop01 datas]$ [ condition ] && echo OK || echo notok
OK
[bigdata@hadoop01 datas]$ [ condition ] && [ ] || echo notok
notok
1
2
3
4
2
3
4