bash虽然突破循环不循环?

时间:2012-01-19 20:47:35

标签: bash loops while-loop break

任何人都知道在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循环并且永远不会回来。

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

正如您所看到的那样,我尝试了done,但只有令牌意外的错误。

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

1 个答案:

答案 0 :(得分:5)

尝试使用continue代替done。这将带您进入循环的下一次迭代。