shell脚本:嵌套循环并继续

Posted

技术标签:

【中文标题】shell脚本:嵌套循环并继续【英文标题】:shell script : nested loop and continue 【发布时间】:2012-10-25 23:09:30 【问题描述】:
while [condition]
do
  for [condition]
  do
    if [ "$x" > 3 ];then
      break
    fi
  done

  if [ "$x" > 3 ];then
    continue
  fi
done

在上面的脚本中,我必须测试"$x" > 3 两次。其实我第一次测试的时候,如果是真的我想跳出while循环,继续下一个while循环。

有没有更简单的方法让我可以使用continue 2 之类的东西来逃避外循环?

【问题讨论】:

为什么不在内部循环中使用continue 2 是的 continue n 。你也确定 `for [condition] ... usually it for n in a b c` 或类似的。祝你好运。 【参考方案1】:

“break”和“continue”是“goto”的近亲,通常应该避免,因为它们会引入一些导致程序控制流飞跃的无名条件。如果存在需要跳转到程序的其他部分的条件,下一个阅读它的人会感谢您为该条件命名,这样他们就不必弄清楚了!

在您的情况下,您的脚本可以更简洁地编写为:

dataInRange=1
while [condition -a $dataInRange]
do
  for [condition -a $dataInRange]
  do
    if [ "$x" > 3 ];then
      dataInRange=0
    fi
  done
done

【讨论】:

以上是关于shell脚本:嵌套循环并继续的主要内容,如果未能解决你的问题,请参考以下文章

自学Linux Shell12.6-嵌套循环for命令

linux脚本里,ssh 里可以嵌套for循环?怎么弄啊

shell 编程 里面 if 嵌套 for 语句的匪夷所思的 事情!!

shell之循环嵌套与扩展(函数)

这将继续导致嵌套的 for 循环做啥?

在 C 中的嵌套循环内继续