我有3个静态值:aa
,bb
,cc
。我想用退出情况无限期地遍历它们。
编写简单的循环很容易:
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
进行操作,直到成功为止。
最好的方法是什么?
答案 0 :(得分:2)
一种简单的方法是将代码嵌套在无限循环内:
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.