大家好呀,好久不见了,前面我们已经 介绍了Shell 脚本中的打印,变量定义,变量使用和变量的高级用法,以及流程控制中的分支判断流程,如果想要回顾一下的话,请参见下面链接:
今天的话呢,我们来给大家分享一下,在shell脚本中的循环流程控制语法简单使用。
在Shell编程语言中,控制循环的方式有三个关键字,分别是for, while 和 until,下面我们就分别来介绍这三种循环方式的语法不同。
还是老规矩,先简单介绍下for 循环的语法形式:
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
这种循环方式类似于python 的语法,采用for ... in ... 的形式,循环一个集合中所有的元素。
下面请看简单的示例:
简单的shell 脚本for循环语法
如上图所示,示例1我们使用了直接遍历集合的方式,这种方式比较少用,因为每次显式把所有要循环的项枚举出来的方式,很不实用。
我们一般还是选用示例2中的方式,这是两层循环,并且配上了格式化输出(大家回顾下,这都是之前学过的内容,此处这么写,主要是为了输出结果好看)。
上面示例的运行结果如下:
shell脚本示例输出结果
如上图就是最简单的for 循环使用语法。
我们经常使用for 循环遍历的还是对求出来的变量结果进行遍历,比如我们可能经常的一个操作是对linux系统变量$PATH 进行遍历,查询$PATH变量包含的所有路径的item项,依次进行某种处理。
如下图是当前我的电脑上的linux 系统默认$PATH 变量内容:
linux 系统的$PATH变量内容
可以看到,PATH变量是由多个完整的路径字符串拼接为一长串的字符串构成,每个完整的路径字符串之间使用冒号分隔。
为了逐项访问,循环遍历整个$PATH变量,
那么我们很有可能会写出下面的循环代码:
Shell脚本之遍历$PATH环境变量
如上图的示例所示,这里有几个点需要进行下介绍:
然后上面的示例脚本执行结果如下:
Shell遍历Path变量打印结果
好了,通过上面的示例,相信大家已经基本掌握了Shell 脚本中,for 循环的用法。
还有一个比较特殊,需要提出来的是,for循环字符串时的特殊表现。
示例如下:
Shell脚本中的字符串遍历
它并不是按照字符去做遍历的,而是按照shell默认分隔符进行分割后形成的列表list进行遍历的,还记得我们上面提到的,shell 的默认分割符是空格。
因此,会对字符串中,每个空格进行分割,分割成多个子字符串,进行打印输出。
上述示例的运行结果如下:
Shell脚本字符串遍历打印结果
好了,到这里,基本上shell脚本的for循环的简单使用基本上就给大家介绍完了。
除了for 循环,shell脚本中还提供了while 循环和until 循环这种显式的条件循环。
下面我们就来分别看下:
while condition
do
command
done
while 循环的格式。
until condition
do
command
done
until 循环格式。
然后我们来看示例:
Shell脚本中的while 和 until 循环
为啥把它们俩放在一起介绍呢,就是因为它们俩的语法和作用几乎是一样的,都是通过一个condition 条件控制循环终止条件。
不同点在于,condition 终止条件刚好两者相反,如上示例,使用while 循环时,当condtion条件为真,则继续循环,为假,则跳出循环。
而until 语法刚好相反,当until 中的condtion 条件为真时,跳出循环,为假时,则继续循环。
上面示例的运行结果如下图所示:
Shell 脚本中的While 循环和UNTIL循环的简单使用
好的,关于Shell脚本中的流程控制,本次主要就是讲解了循环流程控制,结合上一章讲到的分支流程控制部分,Shell脚本中的流程控制的基本语法和基本使用方式就大致介绍完了,下一次我们会搞一次实践课,使用最近学过的Shell变量,Shell流程控制和一些linux 命令,完成一些简单的自动化脚本编写任务。
如果您对我的讲解介绍感兴趣的话,请帮忙关注,点赞,转发。
大家有啥想听的,也可以留言私信我,有点想开一个Python 或者Rust 使用教程,大家觉得咋样呢?
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved