条件判断
# 基本语法
[ condition ]
- 注意:condition 左右要有空格,每个元素之间都要有空格
- 条件非空就是true,[ test ] 返回true,[] 返回false
# 常用判断条件
# 2个整数之间的比较
- = 字符串比较
- -lt 小于 less than
- -le 小于等于 less equal
- -eq 等于 equal
- -gt 大于 greater than
- -ge 大于等于 greater equal
- -ne 不等于 not equal
示例
# 23 >= 22 ?
[root@hadoop100 sh-demo]# [ 23 -ge 22 ]
[root@hadoop100 sh-demo]# echo $?
0
[root@hadoop100 sh-demo]# [ 23 -ge 26 ]
[root@hadoop100 sh-demo]# echo $?
1
[root@hadoop100 sh-demo]# A=1
[root@hadoop100 sh-demo]# [ $A -eq 1 ]
[root@hadoop100 sh-demo]# echo $?
0
[root@hadoop100 sh-demo]# [ $A -eq 2 ]
[root@hadoop100 sh-demo]# echo $?
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 按照文件的权限进行判断
- -r 有读的权限 read
- -w 有写的权限 write
- -x 有执行的权限 execute
示例
[root@hadoop100 sh-demo]# [ -x paramter.sh ]
[root@hadoop100 sh-demo]# echo $?
0
1
2
3
2
3
# 按照文件类型进行判断
- -f 文件存在并且是一个常规文件 file
- -e 文件存在 existence
- -d 文件存在且是一个目录 directory
示例
[root@hadoop100 sh-demo]# [ -d /home/sh-demo/paramter.sh ]
[root@hadoop100 sh-demo]# echo $?
1
1
2
3
2
3
# 应用实例
判断字符串
if [ "ok100" = "ok" ]
then
echo "equal"
fi
1
2
3
4
2
3
4
23是否大于22
if [ 23 -gt 22 ]
then
echo "大于"
fi
1
2
3
4
2
3
4
/root/shell/aaa.txt 目录中的文件是否存在
if [ -e /root/shell/aaa.txt ]
then
echo "存在"
fi
1
2
3
4
2
3
4
Last Updated: 2022/03/20, 10:04:55