我决定玩循环只是为了了解循环在bash中是如何工作的。但我才是那个被耍的人。我只知道break调用可以帮助停止一个特定的循环
echo "For loop begins"
for (( a = 1; a < 10; a++ ))
do
echo -e "\tOuter loop ${a}"
for (( b = 1; b < 100; b++ ))
do
if [[ ${b} -gt 5 ]]
then
break 2
fi
echo -e "\t\tInner loop ${b}"
done
done
echo "For loop completed"
幸运的是,break 2调用也跳出了外循环。
我已经试过把for循环改为for (( a = 1; a <= 10; a++ ))
,第二个循环改为for (( b = 1; b <= 100; b++ ))
,把<=
改为<
,但我仍然得到相同的输出。
genius@GeniusDPhil-hp250g1notebookpc:~$ ./loop.sh
For loop begins
Outer loop 1
Inner loop 1
Inner loop 2
Inner loop 3
Inner loop 4
Inner loop 5
For loop completed
genius@GeniusDPhil-hp250g1notebookpc:~$
我期望外循环运行10次,break
也会让我退出外循环吗?如何正确使用break
?如果没有,那是什么问题?
*注: 我的程序员是3个月大。
1条答案
按热度按时间qfe3c7zg1#
我会怎么做:
注意只使用
break
,因为break 2
也会破坏外部循环。如果你需要像我在这里做的那样重复10次,那么你的代码的逻辑是错误的。检查
break [n]
从for、while、until或select循环中退出。如果指定了n,则中断n个级别。n必须≥ 1。如果n iq大于封闭循环的数量,则退出所有封闭循环。除非n不大于或等于1,否则返回值为0。
使用现代bash,最好使用
if (( b > 5 ))
((...))
和$((...))
是算术命令,如果表达式为非零,则返回退出状态0,如果表达式为零,则返回退出状态1。如果需要副作用(赋值),也用作“let”的同义词。参见http://mywiki.wooledge.org/ArithmeticExpression