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


边栏推荐
- Likou 215 questions, the Kth largest element in an array
- 2021DozerCTF
- Bedtime story | made a Bitmap and AST length system configuration
- paddle 35 paddledetection保存训练过程中的log信息
- Exploration and practice of the "zero trust" protection and data security governance system of the ransomware virus of Meichuang Technology
- B. Codeforces Subsequences
- 深度学习之 12 循环神经网络RNN2
- Web Reverse Lilac Garden
- Future与CompletableFuture
- RADIUS Authentication Server Deployment Costs That Administrators Must Know
猜你喜欢

Single-click to cancel the function

Exploration and practice of the "zero trust" protection and data security governance system of the ransomware virus of Meichuang Technology

Date picker component (restrict year to set only displayed months)

LeetCode-402 - Remove K digits

优化是一种习惯●出发点是'站在靠近临界'的地方

Play RT-THREAD of doxygen

JVM classic fifty questions, now the interview is stable

突破次元壁垒,让身边的玩偶手办在屏幕上动起来!

JS中的filter、map、reduce

Rider调试ASP.NET Core时报thread not gc-safe的解决方法
随机推荐
UPDATE:修改数据语法使用例——《mysql 从入门到内卷再到入土》
B. Trouble Sort
【PCBA scheme design】Bluetooth skipping scheme
JVM classic fifty questions, now the interview is stable
变量和它的特性——《mysql 从入门到内卷再到入土》
什么是Jmeter?Jmeter使用的原理步骤是什么?
【nvm】【node多版本管理工具】使用说明和踩坑(exit status 1)
C#【必备技能篇】Hex文件转bin文件的代码实现
【PCBA方案】电子握力测试仪方案she‘ji
ACM解题笔记——HDU 1401 Solitaire(DBFS)
着力提升制造业核心竞争力,仪器仪表产业迎高质量发展
ENVI自动生成地面控制点实现栅格影像的自动地理配准
卡片盒笔记法的操作步骤
使用SylixOS虚拟串口,实现系统串口自由
第14届全国大学生信息安全竞赛-创新实践能力赛
Interpretation of the paper (g-U-Nets) "Graph U-Nets"
【网络通信四】ping工具源码cmake工程编译以及运行说明
工程师应该怎么学习
地理探测器Geodetector软件的下载、应用与结果解读
直播课堂系统08补-腾讯云对象存储和课程分类管理
