当前位置:网站首页>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启动服务脚本


边栏推荐
- 用汇编带你看Golang里到底有没有值类型、引用类型
- 石油化工行业商业供应链管理系统:标准化供应商管理,优化企业供应链采购流程
- LeetCode-498 - Diagonal Traversal
- Redis Performance Impact - Asynchronous Mechanisms and Response Latency
- 直播课堂系统08-腾讯云对象存储和课程分类管理
- Redis 性能影响 - 异步机制和响应延迟
- Before implementing MES management system, these three questions to consider
- Object.assign用法 以及 与$.extend的区别
- Getting started with kuberentes Auditing
- 自建函数 测试例和语法——《mysql 从入门到内卷再到入土》
猜你喜欢

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

直播课堂系统09--腾讯云点播管理模块(一)

FPGA - 7系列 FPGA内部结构之Memory Resources -03- 内置纠错功能

力扣221题,最大正方形

ACM解题笔记——HDU 1401 Solitaire(DBFS)

Live Classroom System 09--Tencent Cloud VOD Management Module (1)

JS中的filter、map、reduce

TCL:事务的特点,语法,测试例——《mysql 从入门到内卷再到入土》

着力提升制造业核心竞争力,仪器仪表产业迎高质量发展

【PCBA scheme design】Bluetooth skipping scheme
随机推荐
C. Even Picture
Likou 215 questions, the Kth largest element in an array
Floating window in Auto.js
2022.8.9 Mock Competition
微擎盲盒交友变现-vp_ph打开慢优化
ENVI感兴趣区ROI文件由XML格式转为ROI格式
Getting started with kuberentes Auditing
2022.8.8 Selected Lectures on Good Topics (Number Theory Field)
Application of Spatial 3D Model Reconstruction Based on Pix4Dmapper - Spatial Analysis and Site Selection
labelme-屏蔽拖拽的事件
ES6中的for...in/of的使用
ACM解题笔记——HDU 1401 Solitaire(DBFS)
Uniapp编译后小程序的代码反编译一些思路
Web Reverse Lilac Garden
CGO Preliminary Cognition and Basic Data Type Conversion
函数:函数删除操作语法&使用例——《mysql 从入门到内卷再到入土》
【Windows】你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问,这些策略可帮助保护你的电脑
Introduction to PostgreSQL
快消品行业经销商协同系统:实现经销商可视化管理,提高沟通执行效率
These must-know JVM knowledge, I have sorted it out with a mind map
