Shell脚本怎么写?之 Shell脚本中的流程控制(2)

Shell脚本怎么写?之 Shell脚本中的流程控制(2)

首页枪战射击操控2在线版更新时间:2024-06-18

大家好呀,好久不见了,前面我们已经 介绍了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环境变量

如上图的示例所示,这里有几个点需要进行下介绍:

  1. IFS变量是shell中的默认系统变量,代表使用的分隔符是啥,默认分隔符是空格
  2. $PATH环境变量的分隔符是‘ : ’,因此我们想要遍历$PATH变量,需要改变shell脚本的默认分隔符为冒号。
  3. 为了好看,每五个遍历项,进行一次回车换行。

然后上面的示例脚本执行结果如下:

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