bash 无限循环超过 3 个值

bash infinite loop over 3 values

我有 3 个静态值:aabbcc。我想用退出案例无限期地遍历它们。 编写简单的循环很容易:

for i in aa bb cc; do 
   echo $i
done

但我想无限期地遍历它们,直到某些条件是肉:

for i in aa bb cc; do 
   echo $i
   if [ somecondition ]; then
      doSomething
      break
   fi
done

somecondition取决于外部条件和i。它应该看起来像尝试用 i 做一些事情直到成功。

最好的方法是什么?

一种简单的方法是将代码嵌套在无限循环中:

while true; do
    for i in aa bb cc; do
        echo $i;
        if [ somecondition ]; then
            doSomething
            break 2
        fi
    done
done

请注意 break 命令现在有一个参数 2

man bash 说:

    break [n]
        Exit from within a for, while, until, or  select
        loop.   If  n  is  specified, break n levels.  n
        must be >= 1.  If n is greater than  the  number
        of  enclosing  loops,  all  enclosing  loops are
        exited.  The return value is 0 unless n  is  not
        greater than or equal to 1.