当前位置:网站首页>Shell编程之条件语句(二)
Shell编程之条件语句(二)
2022-08-10 21:23:00 【灌南牛x人】
目录
条件测试
条件测试操作
test命令
测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]
条件表达式:判断是与否
文件测试
[ 操作符 文件或目录 ]
常用的测试操作符
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(Excute)
-b:测试是否为设备文件
-c:测试是否为字符设备文件
-s:测试存在且文件大小为空
-L:测试是否为链接文件
执行条件测试操作以后,通过预定义变量$? 可以获得测试命令的返回状态值,从而判断该条件是否成立。
一些操作






第二种格式:




整数值比较
[整数1 操作符 整数2]
常用的测试操作符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)
案例一


案例2

字符串比较
格式1:[字符串1 = 字符串2]
[字符串1 != 字符串2 ]
格式2:[-z 字符串]
常用的测试操作符
=:字符串内容相同
!=:字符串内容不同,!号表示相反的意思
-z:字符串内容为空
案例1


案例2

案列3

逻辑测试
格式1:[表达式1] 操作符 [表达式2]
格式2:命令1 操作符 命令2....
常用的测试操作符
-a或&&:逻辑与,“而且”的意思
-o或||:逻辑或,“或者”的意思
!:逻辑否


if语句的结构
单分支结构



第二个简单例子

因为这个汉字太丑,如何去掉


案例

判断目录是否存在,启动 脚本以后,自定创建/date目录

案例三


遇到问题,没有反应

加个中括号

补充:单个括号( 【 】):必须要有空格 两个字符或数字之间的比较左右必须有空格
条件判断: test一种形式, 【】中间只能使用=和!=比较字符串, 如果使用<、>需要进行转义\.
然后中间如果比较数字要用-lt等符号,不能使用\<比较数字,他会当成字符串处理
两个括号(【【】】),可用于处理逻辑命令,也可以处理字符串是否相等,且使用<、>不用转义符
双分支结构

案例

![]()


![]()
案例2

![]()

例3


多分支结构


案例



案列2


嵌套if语句
例1.判断httpd服务有没有启动
If 判断是否启动
嵌套iF 如果启动------输出已启动
如果没启动----判断是否安装---如果安装---启动
如果没安装----安装---如果安装成功---启动
如果安装不成功-----报错
ps aux | grep httpd | grep -v grep //查询过滤httpd服务
if [ $? -ne 0 ];then //有等于0,没有不等于0
if [ "$(rpm -q httpd)"=="未安装软件包 httpd " ];then //如果未非0,表示没有该服务 ,则表示未安装
注意:这里等号两边不能加空格
echo “正在Apache服务请稍等..........”
yum -y install httpd //则下载httpd服务
systemctl start httpd //开启服务
Else //否则就是已存在安装包,只需要直接开启httpd服务
systemctl start httpd
fi
else
echo "httpd is running" //如果为0,表示该服务正在运行
Fi
1


移除httpd软件包后再执行脚本


case语句结构
格式:
case 变量名称 in
模式1)
命令序列
;;
模式2)
程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其他程序执行段
默认程序段
;;
esac
case行首必须以单词“in”,每一模式必须以单个右括号")"结束
双分号";;"表示命令序列的结束
模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或,比如a|b
最后的)表示默认模式,其中的相当于通配符

case多分支语句


编写apache启动服务脚本


边栏推荐
- 黑猫带你学Makefile第12篇:常见Makefile问题汇总
- LeetCode每日一题(1573. Number of Ways to Split a String)
- labelme - block drag and drop events
- PROCEDURE :存储过程结构——《mysql 从入门到内卷再到入土》
- 扩展中国剩余定理
- Bedtime story | made a Bitmap and AST length system configuration
- 快消品行业经销商协同系统:实现经销商可视化管理,提高沟通执行效率
- 基于Pix4Dmapper的运动结构恢复法无人机影像三维模型重建
- DDL:视图——《mysql 从入门到内卷再到入土》
- Live Classroom System 09--Tencent Cloud VOD Management Module (1)
猜你喜欢

Live Classroom System 08 Supplement - Tencent Cloud Object Storage and Course Classification Management

【PCBA solution】Electronic grip strength tester solution she'ji

Mark!画出漂亮的神经网络图!神经网络可视化工具集锦搜集

ES6中的for...in/of的使用

用示波器揭示以太网传输机制

带你一文读懂SaaS版多租户商城系统对多品牌企业的应用价值

管理员必须知道的RADIUS认证服务器的部署成本

找的笔试题的复盘(一)

为什么一般公司面试结束后会说「回去等消息」,而不是直接告诉面试者结果?

美创科技勒索病毒“零信任”防护和数据安全治理体系的探索实践
随机推荐
Date picker component (restrict year to set only displayed months)
Exploration and practice of the "zero trust" protection and data security governance system of the ransomware virus of Meichuang Technology
web逆向之丁香园
Web Reverse Lilac Garden
智能方案设计——智能跳绳方案
【SQL刷题】Day3----SQL必会的常用函数专项练习
直播课堂系统08-腾讯云对象存储和课程分类管理
2021 CybricsCTF
INSERT:插入操作语法&使用例——《mysql 从入门到内卷再到入土》
JVM classic fifty questions, now the interview is stable
TCL:事务的特点,语法,测试例——《mysql 从入门到内卷再到入土》
ACM模板笔记:最长不下降/上升子序列
流程控制结构——《mysql 从入门到内卷再到入土》
LeetCode每日一题(1573. Number of Ways to Split a String)
【nvm】【node多版本管理工具】使用说明和踩坑(exit status 1)
使用SylixOS虚拟串口,实现系统串口自由
Floating window in Auto.js
DDL:CREATE 创建数据库——《mysql 从入门到内卷再到入土》
阿里巴巴、蚂蚁集团推出分布式数据库 OceanBase 4.0,单机部署性能超 MySQL
MATLAB神经网络拟合工具箱Neural Net Fitting使用方法
