Shell中的条件判断
- 语法
1)test condition
2)[ condition ]
注意:
- condition前后要有空格
- 条件非空返回true,[ abc ]返回true,[ ]返回false
1. test condition的使用
[root@localhost ~]
[root@localhost ~]
hi
[root@localhost ~]
[root@localhost ~]
0
[root@localhost ~]
[root@localhost ~]
1
[root@localhost ~]
[root@localhost ~]
0
2. [ condition ]的使用
[ condition ] condition前后要有空格
[ ]返回false
添加非空为true,[ abc ] 返回true
2.1 [ condition ]的使用
[root@localhost ~]
hi
[root@localhost ~]
[root@localhost ~]
hi
[root@localhost ~]
0
[root@localhost ~]
[root@localhost ~]
1
2.2 [ ]返回false
[root@localhost ~]
[root@localhost ~]
1
2.3 [ abc ]返回true
[root@localhost ~]
[root@localhost ~]
0
[root@localhost ~]
[root@localhost ~]
hi
[root@localhost ~]
[root@localhost ~]
0
[root@localhost ~]
[root@localhost ~]
0
[root@localhost ~]
[root@localhost ~]
0
从上面可以看出来,变量a的值为hi,[ $a=hi ]和[ $a=hello ]都是true,因为没有condition没有加空格,所以返回true。
3. 常用判断条件
3.1 两个字符串直接的比较
[root@localhost ~]
[root@localhost ~]
hi
[root@localhost ~]
[root@localhost ~]
0
[root@localhost ~]
[root@localhost ~]
1
[root@localhost ~]
[root@localhost ~]
0
3.2 两个整数之间比较
符号 | 描述 |
---|
-lt | 小于(less than) |
-eq | 等于(equal) |
-gt | 大于(grather than) |
-ne | 不等于(Not equal) |
-le | 小于等于(less equal) |
-ge | 大于等于(grather equal) |
[root@localhost ~]
-bash: [: gt: 期待二元表达式
[root@localhost ~]
[root@localhost ~]
0
[root@localhost ~]
[root@localhost ~]
0
[root@localhost ~]
[root@localhost ~]
0
[root@localhost ~]
[root@localhost ~]
0
[root@localhost ~]
-bash: [: 5: 期待一元表达式
[root@localhost ~]
[root@localhost ~]
1
[root@localhost ~]
[root@localhost ~]
0
[root@localhost ~]
[root@localhost ~]
0
3.3 按照文件权限进行判断
符号 | 描述 |
---|
-r | 有读的权限(read) |
-w | 有写的权限(write) |
-x | 有执行的权限(execute) |
[root@localhost home]
总用量 0
-rw-r--r--. 1 root root 0 7月 1 00:15 a.sh
drwxr-xr-x. 2 root root 71 6月 29 23:58 jiaoben
[root@localhost home]
[root@localhost home]
1
[root@localhost home]
[root@localhost home]
0
[root@localhost home]
[root@localhost home]
0
[root@localhost home]
[root@localhost home]
0
[root@localhost home]
[root@localhost home]
1
3.4 按照文件类型进行判断
符合 | 描述 |
---|
-f | 文件存在并且是一个常规的文件(file) |
-e | 文件存在(existence) |
-d | 文件存在并且是一个目录(directory) |
[root@localhost home]
/home
[root@localhost home]
总用量 0
-rw-r--r--. 1 root root 0 7月 1 00:15 a.sh
drwxr-xr-x. 2 root root 71 6月 29 23:58 jiaoben
[root@localhost home]
[root@localhost home]
0
[root@localhost home]
[root@localhost home]
1
[root@localhost home]
[root@localhost home]
0
[root@localhost home]
[root@localhost home]
1
[root@localhost home]
[root@localhost home]
1
[root@localhost home]
[root@localhost home]
0
4. 多条件判断
多条件判断
&&表示前一条命令执行成功时,才能执行后一条命令;
||表示上一条命令执行失败后,才能执行后一条命令。
[root@localhost home]
success
[root@localhost home]
aaa
[root@localhost home]
notok
[root@localhost home]
5 > 3