02-Shell 编程之条件语句

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

下面这个是常用的测试命令在脚本里更规范

文件测试命令:

-d:测试是否为文件

-e:测试文件或目录是否存在

-f:测试是否为文件

-r:测试当前用户是否有权限读取

-w:测试当前用户是否有权限写入

-x:测试是否有可执行权限

2.整数值比较:

-eq:第一个数等于第二个数

-ne:第一个数不等于第二个数

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

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

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

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

3. 字符串比较:

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

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

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

逻辑测试:

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

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

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

if 语句的结构:

1. 单分支 if 语句:

单分支 if 语句的执行流程:首先判断条件测试操作的结果,如果返回值为 0,表示条件 成立,执行 then 后面的命令序列,一直到遇见 fi 结束判断为止,继续执行其他脚本代码; 如果返回值不为 0,则忽略 then 后面的命令序列,直接跳至 fi 行以后执行其他脚本代码

2. 双分支 if 语

对于双分支的选择结构,要求针对“条件成立”“条件不成立”两种情况分别执行不同的操 作

双分支 if 语句的执行流程:首先判断条件测试操作的结果,如果条件成立,则执行 then 后面的命令序列 1,忽略 else 及后面的命令序列 2,直到遇见 fi 结束判断;如果条件不成立, 则忽略 then 及后面的命令序列 1,直接跳至 else 后面的命令序列 2 并执行,直到遇见 fi 结 束判断

3. 多分支 if 语句

多分支 if 语句的执行流程:首先判断条件测试操作 1 的结果,如果条件 1 成立,则执 行命令序列 1,然后跳至 fi 结束判断;如果条件 1 不成立,则继续判断条件测试操作 2 的结 果,如果条件 2 成立,则执行命令序列 2,然后跳至 fi 结束判断……如果所有的条件都不满 足,则执行 else 后面的的命令序列 n,直到遇见 fi 结束判断

case 语句的结构

在上述语句结构中,关键字 case 后面跟的是“变量值”,即“$变量名”。整个分支结构包 括在 case…esac 之间,中间的模式 1、模式 2、……、*对应为变量的不同取值(程序期望 的取值),其中*作为通配符,可匹配任意值。 case 语句的执行流程:首先使用“变量值”与模式 1 进行比较,若取值相同则执行模式 1 后的命令序列,直到遇见双分号“;;”后跳转至 esac,表示结束分支;若与模式 1 不相匹配, 则继续与模式 2 进行比较,若取值相同则执行模式 2 后的命令序列,直到遇见双分号“;;”后 跳转至 esac,表示结束分支……依此类推,若找不到任何匹配的值,则执行默认模式“*)” 后的命令序列,直到遇见 esac 后结分支

使用 case 分支语句时,有几个值得注意的特点如下所述

1.case 行尾必须为单词“in”,每一模式必须以右括号“)”结束

2.双分号“;;”表示命令序列的结束

3.模式字符串中,可以用方括号表示一个连续的范围,如“[0-9]”;还可以用竖杠符号 “|”表示或,如“A|B”。

4.最后的“*)”表示默认模式,其中的*相当于通配符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值