条件测试操作
test命令
可以对特定条件进行测试,并根据返回值来判断条件是否成立($?返回值为0表示条件成立)
格式一:test 条件表达式
格式二:[ 条件表达式 ] ##方括号"[]"与条件表达式之间需要至少一个空格进行隔离
文件测试
格式一:test 操作符 表达式
格式二:[ 操作符 文件或目录 ]
常用的操作符
| 测试操作符 | 说明 |
|---|---|
| -e | 测试目录或文件是否存在(Exist) |
| -d | 测试是否为目录(Directory) |
| -f | 测试是否为文件(File) |
| -r | 测试当前用户是否有权限读取(Read) |
| -w | 测试当前用户是否有权限写入(Write) |
| -x | 测试当前用户是否有执行权限(Excute) |
| -L | 测试是否为软链接 |
实际操作:
整数值判断
格式:[ 整数/变量 操作符 整数/变量2 ]
常用的测试操作符
| 测试操作符 | 说明 | 符号 |
|---|---|---|
| -eq | 等于(Equal) | == |
| -ne | 不等于(Not Equal) | != |
| -gt | 大于(Greater Than) | > |
| -lt | 小于(Lesser Than) | < |
| -le | 小于或者等于(Lesser or Equal) | =< |
| -ge | 大于或者等于(Greater or Equal) | => |
实际操作:
查看当前文件数量是否大于10,如果大于进行提示
[root@localhost ~]#[ `ls |wc -l` -gt 10 ] && echo "文件数量大于10"
文件数量大于10
字符串比较
格式一:
[ "字符串1" = "字符串2" ]或[ "字符串1" == "字符串2" ]
[ "字符串1" != "字符串2" ] #有数字最好用引号引用
格式二:
[ -z "字符串" ] #检查字符串是否为空Zero,对于未定义或赋予空值的变量将视为空串
[ -n "字符串" ] #检查是否有字符串存在
实际操作:
逻辑测试
格式一:
[ 表达式 ] 操作符 [ 表达式2 ]
格式二:
命令1 操作符 命令2
常用的测试操作符
| 测试操作符 | 说明 |
|---|---|
| -a或者&& | 逻辑与,“而且”的意思 |
| -o或ll | 逻辑或,“或者”的意思 |
| ! | 逻辑否 |
实际操作:
三元运算符
1、java,C语言
- 条件表达式?值1:值2
- 当条件表达式为真时,取值1;当条件表达式为假时,取值2
2、shell
- [ 表达式 ] && 值1 || 值2
- 当表达式为真时,取值1;当表达式为假时,取值2
实操:
查看指定主机是否在线
if语句的结构
单分支结构
if 条件测试推荐
then 命令系列
fi
实操:
判断已用磁盘空间是否大于5%,如果是就报警提示
awk '{print $n}' 将所在行的信息的第n个字符串显示出来
awk -F -F 指定分隔符为空格
双分支结构
if 条件测试推荐
then 命令系列1
else 命令系列2
fi
实操:
检测80端口是否在监听,如果是,则提示”网站服务已在运行“;如果否,则启动httpd服务
多分支结构
if 条件测试推荐
then 命令系列1
elif 条件测试操作2
then 命令系列2
else命令系列3
fi
实操:
学生考试成绩判断,100分你太棒了,90-99分优秀,70-89良好,60-69分及格,0-59分不及格,其余划成输入错误
case语句结构
case多分只结构
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
......
*)
默认命令序列
esac
case支持的通配符:
* 任意长度的任意字符
? 任意单个字符
[] 指定范围内的任意单个字符
| 或,或者(例:a|b)
实操:
学生考试成绩判断,100分你太棒了,90-99分优秀,70-89良好,60-69分及格,0-59分不及格,其余划成输入错误