嵌入式操作系统开发(第九节)

嵌入式操作系统开发

学习内容:

一:变量表达式

test是shell程序中的一个表达式,通常用在流程控制for,while,until,if等结构中,同test命令去判断文件的存在与性质,变量的互相关系
语法:test<表达式>成立,test返回0,反之返回一个非0值,

二:字符串比较

1.长度比较

两个数值的比较
逻辑操作:可以进行and/or,与其他条件联合使用
文件操作:例如文件是否存在文件的状态等,
字符串比较
-z<字符串>比较字符串的长度是否为0否则等于0则为是返回,
在这里插入图片描述

-n:比较字符串的长度是否大于0,如果大于0则为是,
在这里插入图片描述
<字符串1>=<字符串2>:比较两个字符串是否相同,等号两边要有空格判断是用==
<字符串1>!=<字符串2>:比较两个字符串是否相同,不同则为是
在这里插入图片描述

2.数字比较(数值上的比较)

<数值表达式1><算符><数值表达式2>(算符两边都要有空格)
-eq:两者相等
-ne:两者不等
-lt:前者小于后者
-le:前者小于或等于后者
-gt:前者大于后者
-ge:前者大于或等于后者

符合条件返回0
不符合条件返回1

在这里插入图片描述

3.文件操作

文件测试表达式通常是为了测试文件的文件操作逻辑,
-e:对象是否存在,存在返回值为0
-d:对象存在且为目录,则返回值为0
-f:对象存在且为文件,则返回值为0
-L:对象存在且为符号连接,则返回值为0
-r:对象存在且可读,则返回值为0
-s:对象存在且长度非0,则返回值为0
-w:对象存在且可写,则返回值为0
-x:对象存在且可执行,则返回值为0
!:测试条件的否定。(与上述的符号用空格给隔开)

在这里插入图片描述

4.逻辑测试

常用于逻辑测试的<表达式>有:
! <表达式>:<表达式> 不成立
<表达式1>-a<表达式2>:<表达式1>与<表达式2>同时成立
<表达式1>-o< 表达式2>:<表达式1>或<表达式2>成立

5.shell流程控制语句

条件控制:if,擦色等结构
循环控制:for,while,until等结构
在shell中,条件判断句可以使用if条件语句和case条件语句,case语句的选项比较多

5.1.if条件语句

用法:
if<判别令>;通常是test表达式
then{命令清单1}
then{命令清单2} //else语句可以省略
fi

此处判别令通常是上述test<表达式>,如果只写表达式,则用中括号括起来(中括号两边要有空格)
如果<判别令>返回0(对与test命令来说,就是其后的表达式成立),则将执行then后的命令清单;反之,则执行else后的命令
shell语句中的分号
分号是多个语句之间的分隔符,当只有一个语句的时候,末尾无需分号,最后一个语句后面也无需分号
eg
if【asdfasdfdaf】;then

(1)、单分支 if 语句

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

if 条件测试操作
then
命令序列
fi
在上述语句结构中,条件测试操作既可以是“[条件表达式]”语句,也可以是其他可执行的命令语句;命令序列指的是一条或多条可执行的命令行,也包括嵌套使用的 if 语句或其他流程控制语句。

单分支 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 结束判断。

在这里插入图片描述

(3)、多分支 if 语句

由于if 语句可以根据测试结果的成立、不成立分别执行操作,所以能够嵌套使用,进行多次判断。

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

多分支 if 语句的执行流程:首先判断条件测试操作 1 的结果,如果条件 1 成立,则执行命令序列 1,然后跳至 fi 结束判断;如果条件 1 不成立,则继续判断条件测试操作 2 的结果,如果条件 2 成立,则执行命令序列 2,然后跳至 fi 结束判断……如果所有的条件都不满足,则执行 else 后面的命令序列 n,直到遇见 fi 结束判断。
在这里插入图片描述
补充
1.【】,=,-o两边要有空格,=也可以用= =(=作为赋值符号时不能写成= =)
2.$ANSWER,N两边写不写引号无所谓
3.
eg:使用if-then-else语句创建一个根据输入分数判断分数是否及格的shell程序文件名为ak

在这里插入图片描述
在这里插入图片描述

5.2case条件语句

if条件语句用于在两个选项中选定一个选项,而case条件选择为客户提供了个根据字符串或变量的值从多个选项中选择一项方法。
语法

*case<变量>in
<字符串1>) {<命令清单1>} ;;

<字符串n>) { <命令清单n>} ;;
){其他命令};;
esac

在这里插入图片描述
在case运算模式中也可以使用shell的通配符(" * ", " ? “,” [] “)
通常用” * "作为case命令的最后运算式以便在前面找不到任何相应的匹配项时执行“其他命令”的命令

在这里插入图片描述
在这里插入图片描述

菜单选择:

在这里插入图片描述

eg:假如给出月份数字作为参数,就能编写一个回送月份名字的脚本month。当所给处的数字不在1-12之间,将得处错误信息。

在这里插入图片描述

eg:编写shell脚本cjpd,根据输入的学生成绩判断等级。当成绩>=90为A,
80~90 B
70~80 C
60~70 D
60~0 E

1.if条件句

在这里插入图片描述
在这里插入图片描述

2.case条件句

在这里插入图片描述

在这里插入图片描述

2、循环控制:for、while、until等结构
(一)for循环语句
(1)语法
for <循环变量> [in <循环变量取值集>]
do <命令清单>
done
(2)注意:
如果for语句的后半部分被省略,则默认的<循环变量取值集>就是命令行参数集
如果命令清单有多余的命令,系统会依次执行。

eg:做一个加法器
expr手工命令行,
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值