使用Shell脚本进行条件测试

简介: ⭐本文介绍⭐在简单的Shell程序中,各条语句将按先后顺序依次执行,从而实现批处理的自动化过程,然而,单一的顺序结构使得脚本过于机械化,不够"智能",难以处理更加灵活得系统任务。本文将学习如何进行条件测试,并通过正确使用if语句,使Shell脚本具有一定得"判断"能力,以根据不同得的条件来完成不同的管理任务。

📝理论讲解:


条件测试操作


要使Shell脚本程序具备一定的"智能",面临的第一个问题就是如何区分不同的情况以确定执行何种操作。例如,当磁盘使用率操作95%时,发送警告信息;当备份目录不存在时,能够自动创建;当源码编译程序时,若配置失败则不再继续安装等。


Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功否则(非0值)表示失败或异常。使用专门的测试工具——test命令,可以对特殊条件进行测试,并根据放回置来判断条件是否成立(返回值为0表示条件成立)。


使用test测试命令时,包括以下两种形式:


●test 条件表达式

●[ 条件表达式 ]


这两种方式的作用完全相同,但通常后一种形式更为常用,也更贴近编程的习惯需要注意的是,方括号"[" 或 "]"与条件表达式之间需要至少一个空格进行分隔。


根据需要测试的条件类别不同,条件表达式也不同。比较常用的条件操作包括文件测试,整数值比较,字符串从比较,以及针对多个条件的逻辑测试,下面分别进行介绍。


文件测试


文件测试的是根据指定的路径名称,判断对应的是文件还是目录,或则判断文件是否可读、可写、可执行等。文件测试的常见操作选项如下,使用时将测试对象放在操作选项之后即可。


●-d:测试是否为目录(Directory)。

●-e:测试目录或文件是否存在(Exist)。

●-f:测试是否为文件(File)。

●-r:测试当前用户是否有权限读取(Read)。

●-w:测试当前用户是否有权限写入(Write)。

●-x:测试是否设置有可执行(Excute)权限。


整数值比较


整数值比较指的是根据给定的两个整数值,判断第一个与第二个数的关系,如是否大于等于、小于第二个数。整数值比较的常用操作选项如下,使用时将操作选项放在要比较的两个整数之间。


●-eq:第一个数等于(Equal)第二个数。

●-ne:第一个数不等于)Not Equal)第二个数。

●-gt:第一个数大于(Greater Than)第二个数。

●-lt:第一个数小于(Lesser Than)第二个数。

●-le:第一个数小于或等于(Lesser or Equal)第二个数。

●-ge:第一个数大于或等于(Greater or Equal)第二个数。


整数值比较在Shell脚本编写中的应用较多。例如,用来判断已登录用户数量,开启进程数、磁盘使用率是否超标,以及软件版本号是否符合要求等。实际使用时,往往会通过变量引用、命令替换等方式来获取一个数值。


字符串比较


字符串比较通常用来检查用户输入、系统环境等是否满足条件,在提供交互式操作的Shell脚本中,也可用来判断用户输入的位置参数是否符合要求。字符串比较的常用操作选项如下。


●=:第一个字符串与第二个字符串相同。

●!=:第一个字符串与第二个字符串不相同,其中" ! "符号表示取反。

●-z:检查字符串是否为空(Zero),对于未定义或赋予空值的变量将视为空串。


逻辑测试


逻辑测试指的是判断两个或多个条件之间的依赖关系。当系统任务取决于多个不同的条件时,根据这些条件是否同时成立或者只要有其中一个成立等情况,需要有有一个测试的过程。常用的逻辑测试操作如下,使用时放在不同的测试语句或命令之间。


●&&:逻辑与,表示"而且",只有当前后两个条件都成立时,整个测试命令的返回值才为0(结果成立)。使用test命令测试时,"&&"可该为"-a"。

●||:逻辑或,表示"或者",只要前后两个条件中有一个成立,整个测试命令的返回值即为0(结果成立)。使用test命令测试时,"||"可改为"-o"。

●!:逻辑否,表示"不",只有当指定的条件不成立时,整个测试命令的返回值才为0(结果成立)。


在上述逻辑测试的操作选项中,"&&"和" || "通常也用于间隔不同的命令操作,其作用是相似的。实际上此前以及接触过"&&"操作的应用,如"make && make install"的编译安装操作。


if语句结构


在Shell脚本应用中,if语句是最为常用的一种流程控制方式,用来根据特定的条件测试结果,分别执行不同的操作(如果……那么……)。根据不同的复杂程度,if语句的选择结构可以分别为三种基本类型,适用于不同的应用场合。


单分支if语句


if语句的"分支" 指的是不同测试结果所对应的执行语句(一条或多条)。对于单分支的选择结构。只有在"条件成立"时才会执行相应的代码,否则不执行任何操作。单分支if语句的语法格式如下所示:


if 条件测试操作
then
    命令序列
if


多分支if语句


由于if语句可以根据测试结果的成立,不成立分别执行操作,所以能够嵌套使用,进行多次判断。例如,首先判断某学生的得分是否及格,若及格则再次判断是否高于90分等。多分支if语句的语法格式如下:


if 条件测试操作1
then
    命令序列1
elif 条件测试2
then
    命令序列2
else
    命令序列3
fi


📖实验配置与实现:


推荐步骤:


条件测试逻辑判断应用


If 单分支、双分支和多分枝判断应用


实验步骤:


一、条件测试逻辑判断应用


1、文件条件测试应用


1)测试目录是否存在结果为 0 存在结果非 0 不存在


1.jpg


2)判断文件存在显示 yes,文件不存在非 0


2.jpg


3)判断目录是否有写入权限,有写入权限显示 yes 没有写入权限为空


3.jpg


2、整数值比较判断登录系统用户


1)设置 xshell 使用六个终端登录


4.jpg


2)取值当用用户数量


5.jpg


3)判断当超出 5 个给用户提醒


6.jpg


3、逻辑判断使用


1)而且使用两个条件必须全部匹配显示提醒,判断/mnt 是否是目录,判断是否对/mnt 目


录有写入权限


7.jpg


2)或使用两个条件匹配任意一个显示提醒


8.jpg


4、整数比较运算符使用


1)取值系统的主版本号和次要版本


9.jpg


2)配置逻辑判断两个结果为真显示符合安装条件


10.jpg


5、字符串比较


1)判断系统是否支持中文


11.jpg


2)根据用户输入字符串进行判断

12.jpg



二、if 单分支、双分支、多分枝的应用


1、if 单分支创建目录


1)创建脚本


13.jpg


2)添加执行权限执行脚本


14.jpg


2、if 双份分枝判断是否有 benet 目录没有创建存在提示已经创建目录


1)创建脚本


15.jpg


2)执行脚本


16.jpg


3、if 双分支根据位置变量识别用户输入的 IP 地址判断连通信


1)创建 ping 测试脚本


17.jpg


2)验证脚本


18.jpg


4、if 双分支根变量赋值识别用户输入 IP 地址判断主机连通性


1)创建网路连通性脚本


19.jpg


2)测试脚本


20.jpg


5、if 多分枝判断用户数据整数


1)创建多分枝判断脚本


21.jpg


2)验证脚本


22.jpg


相关文章
|
2月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
86 1
|
2月前
|
Java Shell
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
39 1
|
16天前
|
存储 监控 测试技术
测试脚本编写和维护的最佳实践有哪些?
测试脚本编写和维护的最佳实践有哪些?
|
29天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
53 2
6种方法打造出色的Shell脚本
|
16天前
|
存储 监控 前端开发
如何确保测试脚本的稳定性和可靠性?
确保测试脚本的稳定性和可靠性是保证性能测试结果准确有效的关键
|
15天前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
43 1
|
16天前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
|
16天前
|
测试技术 数据库连接 数据库
测试脚本的编写和维护对性能测试结果有何影响?
测试脚本的编写和维护对性能测试结果有着至关重要的影响,
26 1
|
20天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
40 2
|
2月前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
49 6