任何人都知道在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中,因为实际上只有很少的终止条件,只有全局和当前循环。
答案 0 :(得分:5)
尝试使用continue
代替done
。这将带您进入循环的下一次迭代。