| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> shell编程之条件语句(test、if、case) -> 正文阅读 |
|
[开发测试]shell编程之条件语句(test、if、case) |
目录 前言:?????? 学习条件语句能够让我们处理更加复杂多变得系统任务,这里将学习if和case程序控制语句。 一、条件测试?????? Shell环境根据命令执行后的返回状态值(0?)来判断是否执行成功,当返回值为0时表示成功, 否则(非0值)表示失败或异常。使用专门的测试工具-test命令可以对特定条件进行测试,并根据返 回值来判断条件是否成立(返回值为0表示条件成立)。 语法格式:test? 条件表达式 ? ? ? ? ? 或:[条件表达式]?? (注意中括号和表达式中间需要隔一个空格。) ?????? 两种方式的作用完全相同,后一种较为常用,也更贴近编程习惯。根据需要测试的条件类别不 同,条件表达式也不同。比较常用的条件操作包括文件测试、整数值比较、字符串比较、以及针对 多个条件的逻辑测试。 1、文件测试?????? 文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否可读、 可写、可执行等。文件测试的常见操作选项如下,使用时将测试对象放在操作选项之后即可。
????????执行条件测试操作后,通过预定义变量$?可以获得测试命令的返回状态值,从而判断该条件 是否成立。
2、整数值比较?????? 整数值比较指的是根据给定的两个整数值,判断第一个数与第二个数的关系,如是否大于、等 于、小于第二个数。整数值比较的常用操作选项如下,使用时将操作选项放在要比较的两个整数之 间。
应用如下:
3、字符串比较?????? 字符串比较通常用来检查用户输入、系统环境等是否满足条件,在提供交互式操作的Shell脚 本中,也可用来判断用户输入的位置参数是否符合要求。
测试命令条件格式: [字符串1 = 字符串2] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[字符串1 != 字符串2] ?????????????????????????????????或: [ -z? 字符串] ??执行命令注意中英文区别。 应用如下:
4、逻辑测试?????? 逻辑测试指的是判断两个或多个条件之间的依赖关系。当系统任务取决于多个不同的条件时, 根据这些条件是否同时成立或者只要有其中一个成立等情况,需要有一个测试的过程。 常用的逻辑测试操作如下,使用时放在不同的测试语句或命令之间。 ?
逻辑测试条件表达式格式: [表达式1] 操作符 [表达式2] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 或:命令1? 操作符 ?命令2 应用如下:
补充:
二、if语句?????? 在shell脚本应用中,if语句时最为常用的一种流程控制方式,用来根据特定的条件测试结果, 分别执行不同的操作(如果……那么……)。if语句的选择结果可分为三种基本类型,适用于不同 的应用场合。 1、单分支结构?????? if语句的“分支”指的是不同测试结果所对应的执行语句(一条或多条)。对于单分支的选择结 构,只有在“条件成立”时才会执行相应的代码,否则不执行任何操作。 ????????单分支if语句的执行流程:首先判断条件测试作的结果,如果返回值为0,表示条件成立,则 执行then后面的命令序列,一直到遇见结束判断为止,继续执行其他脚本代码;如果返回值不为 0,则忽略then后面的命令序列,直接跳至行以后执行其他脚本代码,结构如图所示。 ? ?应用如下:
2、双分支结构?????? 双分支选择结构,要求针对“条件成立”、“条件不成立”两种情况分别执行不同的操作。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?????????双分支if语句的执行流程:首先判断条件测操作的结果,如果条件成立,则执行then后面的命 令序列1,忽略clse及后面命令序列2,直到遇见fi结束判断;如果条件不成立,则忽略then及后面 的命令序1,直接跳至else后面的命令序列2并执行,直到遇见f结束判断,结构如图所示。 应用如下: ?
3、多分支结构?????? 多分支就是if语句根据测试结果,然后跟else一起嵌套使用,进行多次判断。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????多分支if语句的执行流程:首先判断条件测试操作1的结果,如果条件1成立,则执行命令序列 1,然后跳至结束判断;果条件1不成立,则继续判断条件测试操作2的结果,如果条件2成立,则 执行命序列2,然后跳至结束判断……如果所有的条件都不满足,则执行else后面的命令列n,直到 遇见fi结束判断。结构如图示。 应用如下:
三、case分支语句?????? case语句主要适用于以下情况:某个变量在多种取值,需要对其中的每一种取值分别执行不同 的命令序列。这种情况与多分支的if语句非常相似,只不过if语句需要判断多个不同的条件,而case 语句只是判一个变量的不同取值。 ?????? 关键字case后面跟的是“变量值”,即“$变量名”,这点需要与for循环语句的结构加以区别。整 个分支构包括在case…esac之间,中间的模式1、模式2、…、*对应为变量的不同取值(程序期 望的取值),其中*作为通配符,可匹配任意值。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?????????case语句的执行流程:首先使用“变量值”与模式1进行比较,若取值相同则执行模式1后的命 令序列,直到遇见双分号“;;”后转至esac,表示结束分支;若与模式1不相匹配,则继续与模式2 进行比较,若取值相同则执行模式2后的命令序列,直到遇见双分号“;;”后跳转至esac,表示结 束分……以此类推,若找不到任何匹配的值,则执行默认模式“*)”后的命令序列,直到遇esac后 结束分支。如图示: ? 注意: ????????● case行尾必须为单词“in”,每一模式必须以右括号“)”结束。 ????????● 双分号“;;”表示命令序列的结束。 ????????● 模式字符串中,可以用方括号表示一个连续的范围,如“[0-9]”;还可以用竖杠符号“|”表 示或,如“A|B”。 ????????● 最后的“*)”表示默认模式,其中的*相当于通配符。 应用如下:
总结:?????? 注意if和case程序控制语句的区别,灵活运用能够轻松完成复杂的工作。 ? |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 0:39:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |