抖音资讯

douyinzx

shell无限循环执行脚本(shell运行脚本的命令)

iseeyu2年前 (2024-05-07)抖音资讯135

熟悉其他高级语言的伙伴们肯定了解循环控制语法是编程中非常基础的内容,今天就介绍Shell 中设计循环控制的语法,for/while/until 等内容。

for 命令

for 命令是最简单的循环控制语句,它的格式为:

for var in list
do 
	commands
done

语法比较简单,不做冗余的介绍了,直接上例子:

图1

输出结果:
The next brand is MacOS
The next brand is Windows
The next brand is Linux
The next brand is Unix
The next brand is Deepin
The last brand is Deepin
The modified brand is Deepin

从图1 中;item 作为临时变量在 ”MacOS WIndows Linux Unix Deepin"列表中循环赋值,然后循环执行do 至 done 之间的语句。这里值得注意的是:item 作为 for 循环的局部变量(或者是栈变量)在循环体外依然可以访问,例如在done 退出循环体后,依然可以访问 item 这个for循环体内的局部变量,这个是和其他高级语言不太相同的。具有高级语言的伙伴们可能第一次会觉得有些奇怪,不过这是Shell 语言的特点,这和C++那些声明式的高级语言是有区别的。在C++中所有变量使用前必须要声明类型,而在Shell 中却没有这样的规定。for 循环中的列表可以有多种形式,可以像图1中那样直接枚举,也可以定义成一个变量,也可以通过命令的返回作为 list 对象(例如可以通过cat file将file中的内容作为list返回)这里就不一一举例了。

修改字段分隔符

上面的例子中,我们发现,list使用过空格来作为分隔符的。那么是什么决定用空格作为list分隔符的呢。其实这里是通过环境变量 IFS (internal field separator) bash shell 的分隔符默为:

  • 空格
  • 制表符
  • 换行符

默认的分隔符优惠会造成麻烦,尤其是需要处理的数据中包含空格时。例如

文件名为:my_file

如图,第二行"New York"中包含了空格,所以for 循环式,“New York”会被认为两个元素。此结果并不是我们想要的。这是我们可以修改 IFS 只为换行符,来规避这种情况。

IFS=$'\n':; #可以一次指定多个符号作为分隔符,只需要将符号串联一起。此例子中换行符,冒号和分号都作为分隔符。

图2

输出结果:
value is China
value is New York
value is London
value is Japan

图2中,我们修改IFS前先将旧的IFS保存下来,然后在适当的地方恢复,这对于脚本中部分逻辑需要恢复默认的 IFS 时提供了方法。

while 命令

while 命令其实是 if-then 和 for 循环的结合体。格式如下:

while test command
do
	commands
done

当 "test command" 返回码为 0 时,do 后的commands 会循环执行。此处应该注意的是:"test command" 需要在 do 的执行过程中发生变化,否则while循环将会无法停止。

until 命令

until 命令和 while 命令工作方式完全相反,until 是等到命令的返回码不为0 时,才执行循环体中的命令,格式如下:

until test commands
do
	other commands
done

上例子:

图3

图3中 until 后判断var1 是否为0, 不为零是, 表达式返回码为非 0 ,此时执行do 循环体内的命令,当 var1 为0 时, 返回码为0, 此时until 循环结束。

循环控制

break 命令:是退出当前循环的简单命令。

图4

输出结果
the number is 1
the number is 2
the number is 3
The loop is completed

从图4中可以看出,当 var==4 时,for 循环会满足break 条件而退出。break 也适合while 和 until 的循环。break 的默认规则和其他语言,例如C/C++相同,只会退出当前的循环,如果出现循环嵌套,那么只会退出break 所在的循环。

break 跳出外部循环

break 语句除了默认的跳出当前循环,还能控制跳出外部循环,这是C/C++语言没有的特性。语法格式为:

break n #n为1则是跳出当前循环,n为2 则是跳出上一级循环

上例子:

图5

输出结果:

Outer loop: 1
Inner loop:1
Inner loop:2
Inner loop:3
Inner loop:4

从图5中可以看出是一个嵌套循环,在内部循环中,当b大于4时,"break 2" 会跳出上一级循环,所以外部循环只执行一次就被内部循环的break 语句退出了。这种用法在其他语言中不太常见,而且也不是特别推荐的用法。因为推出外部循环处理不当,可能会产生异非想要的结果。

continue 命令

continue 的原理和C/C++相同,会提前终止循环,但是不会退出循环。对于没有编程经验的小伙伴,听起来有点绕,可以理解为程序逻辑的短路行为。直接上代码:

图6

输出结果为:
the number is 1
the number is 2
the number is 3
the number is 4
the number is 5
the number is 10
the number is 11
the number is 12
the number is 13
the number is 14

如图6, continue 命令会跳过 5<var1<10 的输入,它只是让循环短路,没有执行循环体中continue后面的内容,但是循环体本身并没有退出。

continue 短路外部循环

continue 也有 break 类似的控制外部循环的命令,语法格式为:

continue n #短路到外部n层嵌套循环

例子和 ‘break n’类似,这里就不再赘述了。

循环语句在实际工作中是非常有用的,例如你想创建多个用户,那么就可以在所有用户名存储在文件中,然后写个shell脚本去读取文件,然后通过循环操作依次去除用户名,然后再通过 useradd 命令添加用户。所有命令在 shell脚本中执行,一气呵成,非常便利。

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/43161.html

相关文章

直播代运营合同避坑:报价、KPI、违约金一次说清

直播代运营合同避坑:报价、KPI、违约金一次说清

去年西安一家女装店老板拿着合同来找我看,就一页纸,上面写着“保证月销30万”。签的时候高高兴兴,三个月后只卖了8万,代运营公司一句“市场环境不好”就撒手不管了。老板想退钱,翻出合同才发现,什么叫销售额、含不含退款、考核多久、数据以谁为准,一个字都没写。这种坑我这两年见了不止十回。 直播代运营合同看...

抖音千川投放怎么投?2026新手起量避坑指南

抖音千川投放怎么投?2026新手起量避坑指南

西安一家做本地餐饮的老张,去年底听人说抖音能拉客,先充了3000块投DOU+。一个月下来,视频播放量是上去了,团购券没卖出几张。后来他才搞清楚,DOU+是给内容加热用的,真正能把团购券卖出去的工具叫巨量千川。2026年,在抖音上做生意的商家基本绕不开这两个东西:DOU+管内容热度,千川管成交转化。...

抖音短视频带货怎么做?2026年挂车出单实操指南

抖音短视频带货怎么做?2026年挂车出单实操指南

直播带货要开播、要人设、要话术,很多西安商家试了两次就放弃了。其实还有一条更轻的路:短视频带货。拍一条视频挂上商品链接,用户刷到直接下单,不用开播,不用连麦,一个人一部手机就能跑。我见过高新一家卖手工辣条的档口,老板就拍后厨炒料,一条视频爆了,挂车链接三天卖了四千多单。我自己也帮几个西安客户跑过这...

抖音矩阵号怎么做?2026年企业多账号布局实操

抖音矩阵号怎么做?2026年企业多账号布局实操

有个西安做门窗的老板跟我抱怨,说一个号发了大半年,播放量卡在一两千上不去,问我是不是号被限流了。我让他去搜搜本地同行,人家三个号轮着发,客户搜「西安封阳台」,翻两屏全是那一家。这不是玄学,就是矩阵。说白了,矩阵不是一个号发十遍,也不是开十个号复制粘贴,而是按客户会搜什么、信什么,把账号分工排好。尤...

抖音蹭热点总翻车?2026年商家追热点的正确姿势

抖音蹭热点总翻车?2026年商家追热点的正确姿势

上周有个做建材的老板问我:热搜上那个话题全网都在拍,我是不是也该跟一条?我反问他,拍完这条视频,客户凭什么找你买瓷砖?他愣了半天没答上来。这就是大多数商家蹭热点的真实状态——看见热点就冲,拍完发现除了播放量,什么都没留下。热点不是不能蹭,是大多数人都蹭错了。我盘过自己服务的客户数据:蹭热点视频的平...

企业抖音蓝V认证2026流程:材料准备与审核避坑

企业抖音蓝V认证2026流程:材料准备与审核避坑

企业号蓝V认证,现在几乎成了西安本地商家做抖音的起手式。不管是餐饮、装修、教育还是批发档口,想挂电话、想开团购、想投DOU+,基本都绕不开这一步。这篇文章把2026年最新的蓝V认证流程、要准备的材料、审核容易挂的地方一次讲清楚。蓝V认证到底有什么用?值不值600块蓝V说白了就是抖音给企业主体做的实...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片