点我

流程控制语句

尽管此时可以通过使用 Linux 命令、管道符、重定向以及条件测试语句来编写Shell 脚本,但是这种脚本并不适用于生产环境。原因是它不能根据真实的工作需求来调整具体的执行命令,也不能根据某些条件实现自动循环执行。例如,我们需要批量创建 1000位用户,首先要判断这些用户是否已经存在;若不存在,则通过循环语句让脚本自动且依次创建。

if条件测试语句

if 条件测试语句可以让脚本根据实际情况自动执行相应的命令。从技术角度来讲,if 语句分为单分支结构、双分支结构、多分支结构;

单分支结构

if 条件语句的单分支结构由 if、then、fi 关键词组成,而且只在条件成立后才执行预设的命令,相当于口语的“如果……那么……”。

image-20250105023920072

双分支语句

if 条件语句的双分支结构由 if、then、else、fi 关键词组成,它进行一次条件匹配判断,如果与条件匹配,则去执行相应的预设命令;

反之则去执行不匹配时的预设命令,相当于口语的“如果……那么……或者……那么……”。

image-20250105024047529

多分支语句

if 条件语句的多分支结构由 if、then、else、elif、fi 关键词组成,它进行多次条件匹配判断,这多次判断中的任何一项在匹配成功后都会执行相应的预设命令,相当于口语的“如果……那么……如果……那么……”。

使用多分支的 if 条件语句来判断用户输入的分数在哪个成绩区间内,然后输出如Excellent、Pass、Fail 等提示信息。在 Linux 系统中,read 是用来读取用户输入信息的命令,能够把接收到的用户输入信息赋值给后面的指定变量,-p 参数用于向用户显示一定的提示信息。

image-20250105025037412

for条件循环语句

for 循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理,当要处理的数据有范围时,使用 for 循环语句再适合不过了。

for循环语句格式:

for 变量名 in 取值列表
do
    命令序列
done

image-20250105030501970

while条件循环语句

while 条件循环语句是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,完全不同于 for 循环语句中有目标、有范围的使用场景。

while 循环语句通过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行,为假就结束循环。

while语句的格式:

while 条件测试操作
do
    命令序列
done

练习:编写一个用来猜测数值大

脚本 Guess.sh。该脚本使用$RANDOM 变量来调取出一个随机的数值(范围为 0~32767),将这个随机数对 1000 进行取余操作,并使用 expr 命令取得其结果,再用这个数值与用户通过 read命令输入的数值进行比较判断。

image-20250105031707480

case条件测试语句

case 条件测试语句和 switch 语句的功能非常相似!case 语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;而如果数据不在所列出的范围内,则会去执行星号(*)中所定义的默认命令。

case语句格式:

case 变量值 in
模式1)
    命令序列1
    ;;
模式2)
    命令序列2
    ;;
    ......
*)
默认命令序列
esac

image-20250105032356519

分类: Linux

评论

-- 评论已关闭 --

目录