【发布时间】:2012-02-14 12:35:53
【问题描述】:
有谁知道在 bash 中立即退出 while/until 循环的当前迭代,但继续循环中的下一个迭代的简单方法?
我的基本结构是:
sort -u -r -g -k 5 -t ' ' $filteredtoptrigsf |\
while read -a linA; do
stuff
morestuff
[[ $smthStinks -eq 1 ]] && break
[[ ${linA[*]} == $onlyThisLineStinks ]] && done
lotsaSlowProcessing
doSmthDangerous
done
在第一个 [[ ... ]] 测试中,由于某些计算条件,我绝对希望跳出 while 循环并且永远不会回来。
在第二个 [[ ]] 测试中,满足的条件应该只跳出循环一次,避免下面的代码,但继续读取下一行输入并让 while 继续。
如您所见,我在那里尝试了done,但只有令牌意外错误。
我宁愿不要在 if 和 else 中包装循环的大部分代码,因为实际上存在相当少的终止条件,无论是全局的还是仅针对当前循环的。
【问题讨论】:
标签: bash loops while-loop break