的命令循环在bash中是非常有用的。他们允许你运行的一系列命令多少次就需要处理大量的数据。的打破和继续命令提供了另一个特殊的选项。他们允许你提前退出循环或跳过循环中的剩余命令并返回到开始。
这两个打破和继续命令是只有在使用为,而和直到循环。事实上,如果你尝试调用打破bash命令自己,会告诉你。
打破美元bash:打破:只有有意义的“为”,“而”,或“之前”循环
如果你问任何一个命令使用哪一个命令,哪一个将回应如果不知道你指的是什么。毕竟,无论是打破也不继续被实现为一个可执行文件,所以呢哪一个命令是不会为你找到一个路径名。相反,两人都只是内置命令bash。
使用break命令
如果你想退出循环之前的所有命令循环的循环一直运行和价值已经被处理,这个命令只是你需要什么;它提供了一种过早退出循环。这是一个简单的例子如果满足特定条件,打破运行命令:
对,或者直到循环做command1 command2如果(条件);然后休息= = = = = = = = = = = = = = = = = + fi | command3仅做| | command4 < = = = = = = = = = = = = = = = = = +
的打破命令退出循环,并移动到任何命令遵循它。
在下面的示例中,我们给对方运行脚本10试图猜测一个随机数生成的shuf命令。如果这个人猜测正确的号码,想确认和循环退出。否则,它贯穿循环完整的十倍。
# !/bin/bash #生成一个随机数随机= ' shuf - 0 - 99 n1“回声”试图猜出我最喜欢的1 - 10或两位数!”为((试着= 1;试着< = 10;尝试+ +))做呼应- n”想尝试美元:“阅读猜如果(猜= =随机美元);然后回声“你得到它了!”打破fi完成
运行该命令,您将看到这样的:
break1 10美元试图猜出我最喜欢的1 -或两位数!猜1:3猜想2:27猜3:11你得到它了!
使用一个而循环工作。
# !/bin/bash #生成一个随机数随机= ' shuf - 0 - 99 n1”尝试= 1回声”试图猜出我最喜欢的1 - 10或两位数!”(le尝试10美元)做呼应- n”想尝试美元:“阅读猜如果(猜= =随机美元);然后回声“你得到它了!”打破fi((尝试= + 1))
下一个示例使用一个直到循环。
# !/bin/bash #生成一个随机数随机= ' shuf - 0 - 99 n1”尝试= 1回声”试图猜出我最喜欢的1 - 10或两位数”直到echo - n(尝试gt 10美元)做“猜美元试:“阅读猜如果[猜= =随机美元]回声“你得到它了!”打破fi((尝试= + 1))
继续命令
的继续”命令的工作原理类似于打破,但它不会退出循环,除非它在最后一次通过。否则,跳过循环中的剩余命令并返回到顶部继续。
对,或者直到循环< = +做| command1 | command2 |如果(条件);然后继续| = = = = = = = = = = = = = = + fi command3仅command4完成
在下面的示例中,该脚本接受像“猫狗鱼”的参数列表和它们之间插入一个逗号除了最后的论点。
# !/bin/bash numargs = $ # = " " lastarg = ${列表!#}如果($ numargs > 0);然后在“echo $ @”如果参数[arg = = lastarg美元];然后继续fi列表= "列表参数美元”,完成fi回声列表lastarg美元
这里有一个例子:运行它
美元cont1猫狗鱼猫、狗、鱼
使用break和继续循环内部循环
的继续命令还可以回到一个外循环。如果你有一个脚本,里面有一个循环回路,使用继续数字参数(例如,继续2)将回到外层循环的开始而不是目前的一个。
在下面的简单的脚本中,任何时间内循环的数字相比是相等的,脚本回外层循环移动。
# !/bin/bash因为我在{1 . .3}在{1 j . .我情商美元3}如果[[j]]然后回声“$ i = $ j”继续2 fi回声”$我! = $ j“完成完成
同样适用于使用一个参数打破命令。使用休息2例如,会导致脚本退出电流环和外循环。下图说明了这一点。注意,打破命令退出循环。
为,或者直到循环做command1,虽然或者直到循环做command2如果(条件);然后休息2 = = = = = = = = = = = = = + command3仅做| fi | | command4 | |完成command5 < = = = = = = = = = = = = = = = = = +
总结
的打破和继续命令允许你退出循环bash脚本或跳过剩余的命令和回到顶部的一个循环取决于特定情况。它们可以很方便当你需要跳过一些命令取决于您正在处理的数据。