【问题标题】:bash while break out of cycle not loop?bash while 打破循环而不是循环?
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 啊谢谢。我知道我在手册页中忽略了一些简单的东西
    猜你喜欢
    • 2018-03-23
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 2022-08-19
    相关资源
    最近更新 更多