bash虽然突破循环不循环?

Mar*_*cos 2 bash loops break while-loop

任何人都知道一种简单的方法来立即退出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
Run Code Online (Sandbox Code Playgroud)

在第一次[[...]]测试中,由于某些计算条件,我肯定希望突破while循环并且永远不会回来.

在第二个[[]]测试中,满足一个条件,该条件应该只突破循环一次,避免在它下面的进一步代码,但继续读取下一行输入并在继续时让.

正如你所看到我在done那里尝试但只有令牌意外的错误.

我宁愿不将大部分循环代码包含在if和else中,因为实际上只有很少的终止条件,只有全局和仅当前循环.

che*_*ner 5

尝试continue而不是done.这将带您进入循环的下一次迭代.