《零基础Linux 从入门到精通》_从零开始_轻松掌握Linux操作系统_20.3 一次性任务:at
148
2023-10-23
【摘要】 本书摘自《零基础Linux 从入门到精通》一书中第13章,第2.3节,编者是零壹快学
13.2.3 if-then-elif语句
有时候我们需要做多个条件的判断,比如我们先读取a文件,如果a文件不存在,再尝试读取a 的备份文件,如果备份文件依然不存在,则创建一个a文件。这时候是多重条件分支,就可以用if-then-elif语句了,格式如下。
基 础 Linux 从入门到精通
if命令1; then
第一组命令
elif命令2; then
第二组命令
elif命令3; then
第三组命令
else
第四组命令
fi
其中,命令1、2、3之间是顺次判断执行的关系,如果命令1执行成功,返回状态码为0,那么执行完第一组命令后,后续的命令将不会再执行。
动手写 13.2.4
执行结果如下。
[root@localhost script]# sh if04.sh
cat: file1: 没有那个文件或目录
cat: file1.bak: 没有那个文件或目录
create file1
[root@localhost script]# sh if04.sh
file1 exist
第 13 章 结构化命令
这个脚本的意思是:读取file1文件内容,如果file1不存在,寻找file1的备份文件,通过备份文件恢复file1文件;如果file1和备份文件都不存在,就创建file1文件和file1.bak文件。
13.2.4 条件比较
前面的if语句的条件判断都是根据命令执行的返回码决定shell脚本的执行走向,那么有没有 办法通过比较变量值来判断程序应该执行的方向呢? 答案毫无疑问是有的,使用方括号可以实现 数值比较、字符串比较等功能,当条件成立后,执行写好的命令组,这就与一些编程语言相类似了。
首先我们介绍一下数值比较的功能,下面列出了比较两个值大小时可以使用的参数。 表13.2.1 数值比较
参数 含义
a -eq b 判断 a 与 b 是否相等
a -ge b 判断 a 是否大于等于 b
a -gt b 判断 a 是否大于 b
a -leb 判断 a 是否小于等于 b
a -lt b 判断 a 是否小于 b
a -ne b 判断 a 是否不等于 b
具体用法如下所示:
动手写 13.2.5
基 础 Linux 从入门到精通
执行结果如下所示。
测试val1变量是否小于val2变量,执行结果为val1小于val2,因此与测试结果相一致。但是shell脚本不支持浮点数的比较,否则会报错,如下所示。
动手写 13.2.6
执行结果如下所示。
此时,shell脚本报错,提示只能是整数表达式。因此,在if语句中无法进行浮点数之间的比 较,只能进行整数的比较,这点需要读者在实际应用中加以注意。
除此之外,还可以进行字符串的比较,具体功能如表13.2.2所示。
表13.2.2 字符串比较
参数 描述
str1 = str2 判断两个字符串是否相等
str1 != str2 判断两个字符串是否不同
str1 < str2 判断 str1 是否小于 str2
str1 > str2 判断 str1 是否大于 str2
-n str1 判断 str1 长度是否不为 0
-r str1 判断 str1 长度是否为 0
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。