条件操作概述
测试操作
语法格式
- test 表达式
- [ 表达式 ]
注意表达识的两边要留有一个空格
常见的测试操作
字符串比较
- [ 操作符 字符串 ]
| 操作符号 |含义 |
| --- | --- |
| -z | 字符串的值为空|
| -n | 字符串的值不为空|
[root~] # a=''
[root~]# [ -z $a ] && echo yes || echo no
[root~]# [ $USER=='root' ] && echo "超级用户"
整数值比较
| 操作符 | 含义 |
|---|
| -eq | 等于(equal) |
| -ne | 不等于(not equal) |
| -ge | 大于或者等于 |
| -le | 小于或等于 |
| -gt | 大于 |
| -lt | 小于 |
检查已经登陆的用户数,是否不超过5个
[root~]# [ `who | wc -l` -le 5] && echo "用户不超过5个"
文件状态测试
| 操作符 | 含义 |
|---|
| -e | 判断对象是否存在,若存在则结果为真 |
| -d | 判断对象是否为目录,若是则结果为真 |
| -f | 判断对象是否为文件,若是则结果为真 |
| -r | 判断对象是否有可读权限,若是则结果为真 |
| -w | 判断对象是否有可写权限,若是则结果为真 |
| -x | 判断对象是否有可执行权限,若是则结果为真 |
[root~] # [ -d /etc/vsftpd ] && echo "yes"
组合多种条件
逻辑分隔操作
| 操作符 | 含义 |
|---|
| && | 给定条件必须都成立,整个测试结果才为真 |
| || | 只要其中一个条件成立,整个测试结果为真 |
| 逻辑运算 | |
|---|
| && | 之前指令成功才会执行之后指令 |
| || | 之前指令失败才会执行之后指令 |
# 当/opt/testdir目录不存在时,创建该目录
[root~] # [ $USER =='root' ] \&\& [ $PWD=='/root' ]
[root~] # [ $? -eq 0 ] && echo yes