有人知道一种简单的方法可以立即退出 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
,但只有 token 意外的错误。
我不想将大部分循环代码包装在 if 和 else 中,因为实际上有相当多的终止条件,无论是全局的还是仅针对当前循环。
最佳答案
尝试继续
而不是完成
。这将带您进入循环的下一次迭代。
关于bash while Break 跳出循环而不是循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8933048/