bash 无限循环超过 3 个值
bash infinite loop over 3 values
我有 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
做一些事情直到成功。
最好的方法是什么?
一种简单的方法是将代码嵌套在无限循环中:
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.
我有 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
做一些事情直到成功。
最好的方法是什么?
一种简单的方法是将代码嵌套在无限循环中:
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.