当前位置:网站首页>Shell conditional statement judgment
Shell conditional statement judgment
2022-08-03 04:44:00 【G Curry Fried Rice】
目录
一、test命令
命令格式
Shell 环境根据命令执行后的返回状态值 " $? " 来判断是否执行成功,当返回值为0时表示成功,否则表示失败或异常(非0值).
使用专门的测试工具 test 命令,可以对特定条件进行测试,并根据返回值(值为0)来判断是否成立.
格式1:test 条件表达式
格式2:[条件表达式]
格式3:[[条件表达式]]
区别 Double brackets can fuzzy matching
文件测试
文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否可读、可写、可执行等.
基本格式:
[ 操作符 文件或目录 ] (注意两端要有空格) # !代表取反 [ ! 操作符 文件或目录 ]
常用操作符 | 说明 |
---|---|
-d | 测试是否为目录(Directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限执行(excute) |
-x | 测试当前用户是否有权限执行 |
-b | 测试是否为设备文件 |
-c | Test whether for character device |
-s | 测试存在且文件大小为空 |
-L | 测试是否为链接文件 |
用test命令进行测试
用[ 条件表达式 ]测试
二、数值比较
整数值比较是指根据给定的两个整数值来判断第一个数与第二个数的关系,如是否大于、等于、小于第二个数.
基本格式和常用选项如下:
格式 | 说明 |
---|---|
-eq | 第一个数等于(Equal)第二个数 |
-ne | 第一个数不等于(Not Equal)第二个数 |
-gt | 第一个数大于(Greater Than)第二个数 |
-lt | 第一个数小于(Lesser Than)第二个数 |
-le | 第一个数小于或等于(Lesser or Equal)第二个数 |
-ge | 第一个数大于或等于(Greater or Equal)第二个数 |
判断当前已登录的用户数,当小于5个时输出“太少了”
三、字符串比较
String comparison format:
[ 字符串1 = 字符串2 ]
注意空格
[ 字符串1 != 字符串2 ]
[ -z 字符串 ]
常用的测试操作符:
=:The first string, and the second string is the same
!=:第一个字符串与第二个字符串不相同,其中“!”符号表示取反
-z:字符串内容为空
使用两个[[ ]] 要使用2个== The right to use the wildcard
交互操作,用户输入yes或no来确认某个任务
四、逻辑测试
逻辑测试指的是判断两个或多个条件之间的依赖关系.When the system task depends on several different conditions,Judgment is established according to the conditions at the same time or as long as there is one of the set up, and so on and so forth,Need to have a test process.
格式:
[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2
&&:逻辑与,表示而且,Only when the two terms are established,整个测试命令的返回值才为0(结果成立).
使用Test命令测试时,“&&”可改为“-a”.
||:逻辑或,表示或者,只要前后两个条件有一个成立,整个测试命令的返回值即为0(结果成立).
使用Test命令测试时,“||”可改为“-o”.
!:逻辑否,表示“不”,只有当指定的条件不成立时,整个测试命令的返回值才为0(结果成立).
五、if语句
实际上使用“&&”和“||”逻辑测试已经可以完成简单的判断并执行相应的操作,但是当需要选择执行的命令语句较多时,这种方式将使执行代码显得很复杂,不好理解.而使用专用的 if 条件语句,可以更好地整理脚本结构,使得层次分明, 清晰易懂
1、单分支的if语句
语法格式:
if 条件测试操作
then
命令序列
fi
单分支if语句的执行流程:首先判断条件测试操作的结果,结果返回值为0,表示条件成立,则执行then后面的命令序列,一直遇到fi结束判断为止,继续执行其他代码.如果返回值不为0,则忽略then后面的命令序列,直接跳至fi行以后执行其他脚本代码.
2、双分支的if语句
对于双分支的选择结构,要求针对“条件成立”“条件不成立”两种情况分别执行不同的操作.
语法格式
if 条件测试操作
then
命令序列1
else
命令序列2
fi
双分支if语句的执行流程:首先判断条件测试操作的结果,如果条件成立,则执行then后面的命令序列1,忽略else及后面的命令序列2,直到遇见fi结束判断;如果条件不成立,则忽略then及后面的命令序列1,直接跳至else后面的命令序列2并执行,直到遇见fi结束判断.
Test whether the host open:
Test whether the current user isroot用户:
3、多分支的if语句
多分支结构能够根据多个互斥的条件分别执行不同的操作,实际上等同于嵌套使用的if语句.
根据 男(学号11-20)8-10分为优秀 6-7合格 女(学号1-10)7-10分为优秀 6分为合格 ,6The following all unqualified execute judgment
六、case分支语句
case 分支语句格式
case 变量值 in
模式一)
命令序列
;;
模式二)
命令序列
;;
……
*)
默认命令序列
esac
case语句注意事项
case行首必须为单词“in”,每一模式必须以单个右括号")"结束
双分号";;"表示命令序列的结束
模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]",还可以用竖杠符号 “|”表示或,如“A|B”.
最后的)表示默认模式,其中的相当于通配符
边栏推荐
- 【Harmony OS】【ARK UI】ETS 上下文基本操作
- Interface test framework combat (1) | Requests and interface request construction
- typescript39-class类的可见修饰符
- 自组织是管理者和成员的双向奔赴
- unity2D横板游戏教程6-敌人AI以及受击动画
- BIOTIN ALKYNE CAS:773888-45-2价格,供应商
- Where is the value of testers
- BIOTIN ALKYNE CAS: 773888-45-2 Price, Supplier
- DFS's complement to pruning
- UV 裂解的生物素-PEG2-叠氮|CAS:1192802-98-4生物素接头
猜你喜欢
2022/08/02 学习笔记 (day22) 多线程
Talking about GIS Data (6) - Projected Coordinate System
接口测试框架实战(四)| 搞定 Schema 断言
How to use the interface management tool YApi?Beautiful, easy to manage, super easy to use
私域流量引流方法?分享购火爆的商业模式,你值得拥有
4.深度学习的几何解释与梯度的优化
社交电商如何做粉丝运营?云平台怎么选择商业模式?
shell script loop statement
6.神经网络剖析
Online password generator tool recommendation
随机推荐
mysql 创建索引的三种方式
【HMS core】【Ads Kit】华为广告——海外应用在国内测试正式广告无法展示
CobalStrike(CS)基础超级详细版
接口测试框架实战(二)| 接口请求断言
接口测试如何准备测试数据
4.深度学习的几何解释与梯度的优化
三丁基-巯基膦烷「tBuBrettPhos Pd(allyl)」OTf),1798782-17-8
C#异步和多线程
接口测试框架实战(四)| 搞定 Schema 断言
[Developers must see] [push kit] Collection of typical problems of push service service 2
redis键值出现 xacxedx00x05tx00&的解决方法
Can Oracle EMCC be installed independently?Or does it have to be installed on the database server?
【开发者必看】【push kit】推送服务服务典型问题合集2
技术分享 | 接口自动化测试中如何对xml 格式做断言验证?
传统企业如何转型社交电商,泰山众筹的玩法有哪些?
10.预测房价:回归问题
[Harmony OS] [ArkUI] ets development graphics and animation drawing
Technology Sharing | How to do assertion verification for xml format in interface automation testing?
Interface test practice | Detailed explanation of the difference between GET / POST requests
8.电影评论分类:二分类问题