当前位置:网站首页>shell脚本------条件测试 if语句和case分支语句
shell脚本------条件测试 if语句和case分支语句
2022-08-01 09:29:00 【AKA|布鲁克林欧神仙】
一,条件测试
shell环境根据命令执行后返回的状态值$?来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。使用专门的测试工具—test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立)。
语法格式:
1,test命令
格式1:test条件表达式
格式2:[ 条件表达式 ] #注意中括号和表达式中间需要一个空格
[[ 条件表达式 ]]
2,文件测试
文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否,可读,可写,可执行等,文件测试的常见操作选项如下,使用时将测试对象放在操作选项之后即可
常用操作符 | 说明 |
-d | 测试是否为目录 |
-e | 测试目录或者文件是否存在 |
-f | 测试是否为文件 |
-r | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限执行 |
-b | 凑人数是否为设备文件 |
-c | 测试是否为字符设备文件 |
-s | 测试存在且文件大小为空 |
-L | 测试是否为连接文件 |
执行条件测试操作以后,通过预定义变量$?可以获得测试命令的返回状态值,从而判断该条件是否成立。例如,执行以下操作可测试目录/media/是否存在,如果返回值$?为0,表示存在此目录,否则表示不存在或者虽然存在但不是目录。
例1
3,整数值比较
[ 整数1 操作符 整数2 ]
常用操作符 | 说明 |
-eq | 等于(Equal) |
-ne | 不等于(Not Equal) |
-lt | 小于(Leser Than) |
-gt | 大于(Greater Than) |
-le | 小于或等于(Lesser or Equal) |
-ge | 大于或等于(Greater or Equal) |
4,字符串比较
格式1:[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2: [ -z 字符串 ]
常用操作符 | 说明 |
= | 字符串内容相同 |
!= | 字符串内容不同,!号表示相反的意思 |
-z | 字符串内容为空 |
-n | 检查是否有字符串存在 |
5,逻辑测试
格式1:[ 表达式 ] 操作符 [ 字符串2 ]
格式2:,命令1 操作符 命令2
常用操作符 | 说明 |
-a或&& | 逻辑与,而且的意思 |
-o或▕▕ | 逻辑或,或者的意思 |
! | 逻辑否 |
二,if语句
1,单分支的if语句
- 实际上是用"&&" 和"| |"逻辑测试以及可以完成建大的判断并执行相应的操作,但是当需要选择执行的命令语句较多时,这种方式将执行代码显得很负载,不好理解。而使用专用的if条件语句,可以更好的整理脚本结构
- 单分支if语句:对于单分支的选择结构,只有在"条件成立"时才会执行相应的代码,否则不执行任何操作。
语法格式
if 条件测试
then
命令序列
fi
2,双分支语句
3,多分支语句
边栏推荐
- 淘宝商品详情又见淘宝详情,升级高级版 API
- UXDB如何返回当前数据库所有表的记录数?
- 安装GBase 8c数据库的时候,报错显示“Resource,如何解决?
- HoloView--Customization
- 微服务:事务管理
- 程序员如何学习开源项目,这篇文章告诉你
- leetcode-6132:使数组中所有元素都等于零
- 堆内存的介绍及应用(含例子)
- Install GBase 8 c database, the error shows "Resource, how to solve?
- Manual upgrade and optimization tutorial of Lsky Pro Enterprise Edition
猜你喜欢
随机推荐
opencv创建窗口—cv.namedWindow()
What are the common API security flaws?
Analysis of High Availability Solution Based on MySql, Redis, Mq, ES
leetcode 42. 接雨水
量化日常工作指标
ASP.NET Core 6框架揭秘实例演示[30]:利用路由开发REST API
Lsky Pro 企业版手动升级、优化教程
笔记。。。。
在GBase 8c数据库后台,使用什么样的命令来对gtm、dn节点进行主备切换的操作
navicat mysql 内存占用过高,被强制关闭
sql server, FULL模式, dbcc shrinkfile(2,1) 不能收缩事务日志,还是原来的大小,是为什么?
How programmers learn open source projects, this article tells you
js中如何实现深拷贝?
笔记。。。。
leetcode-6133:分组的最大数量
Leetcode - 6135: the longest part of the figure
用OpenCV的边缘检测
将aof文件转换为命令waoffle安装和使用
微服务:事务管理
GBase 8c中怎么查询数据库配置参数,例如datestyle