shell 脚本 : nested loop and continue

标签 shell continue

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 的东西逃避外循环?

最佳答案

“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 脚本 : nested loop and continue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13078677/

相关文章:

java - maven java.lang.NoClassDefoundError Linux

linux - 如果在 shell 脚本中给出了子 ID,如何找到父 ID

Python - 更好的循环解决方案 - 出现错误后重新运行并在 3 次尝试后忽略该错误

c++ - 使用 continue 无限循环

bash - 为什么在没有为测试提供任何参数时,在 bash 中使用 -f 进行测试会返回 true?

ruby-on-rails - 如何从 Ruby on Rails Web 服务器编译和编码,限制 CPU 和内存使用?

Android:具有 2 个 dnsmasq 的热点同时运行

python - 这对关键字 "continue"和 "yield"在 Python 中起什么作用?

ruby - 相当于 Ruby 中的 "continue"

java - 减少 Java 中的内循环迭代次数以提高效率