9.Scripts
9.5.6 break
1.格式与说明
break n
n 表示跳出循环的层数,如果省略 n,则表示跳出当前的整个循环。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。
![1588938286518353.png image.png]()
注:本图有点小瑕疵,不该有“done”到“循环结束”的箭头
2.案例1——求几个正数的和
#!/bin/bash
sum=0
while read n; do
if((n>0)); then
((sum+=n))
else
break
fi
done
echo "sum=$sum"
#输入0或者负数结束,也可以按Ctrl+D结束。
3.案例2——多个循环中的break
[root@localhost tmp]# vim 1.sh
#!/bin/bash
i=0
while ((++i)); do #外层循环
if((i>4)); then
break #跳出外层循环
fi
j=0;
while ((++j)); do #内层循环
if((j>4)); then
break #跳出内层循环
fi
printf "%-4d" $((i*j))
done
printf "\n"
done
[root@localhost tmp]# sh 1.sh
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
4.案例3——使用 break 跳出双层循环。
[root@localhost tmp]# vim 1.sh
#!/bin/bash
i=0
while ((++i)); do #外层循环
j=0;
while ((++j)); do #内层循环
if((i>4)); then
break 2 #跳出内外两层循环
fi
if((j>4)); then
break #跳出内层循环
fi
printf "%-4d" $((i*j))
done
printf "\n"
done
[root@localhost tmp]# sh 1.sh
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
9.5.7 continue
1.格式和说明
continue n
说明:
u n 表示循环的层数:
u 如果省略 n,则表示 continue 只对当前层次的循环语句有效,遇到 continue 会跳过本次循环,忽略本次循环的剩余代码,直接进入下一次循环。
u 如果带上 n,比如 n 的值为 2,那么 continue 对内层和外层循环语句都有效,不但内层会跳过本次循环,外层也会跳过本次循环,其效果相当于内层循环和外层循环同时执行了不带 n 的 continue。
u continue 关键字也通常和 if 语句一起使用,即满足条件时便跳出循环。
![1588938211944400.png image.png]()
注:本图有一点瑕疵,不该有“done”到“循环结束”的箭头。
2.案例1
#!/bin/bash
sum=0
while read n; do
if((n<1 || n>100)); then
continue
fi
((sum+=n))
done
echo "sum=$sum"
#注:本例只能用Ctrl+D结束。
3.案例2——跳出多重循环
[root@localhost tmp]# vim 1.sh
#!/bin/bash
for((i=1; i<=5; i++)); do
for((j=1; j<=5; j++)); do
if((i*j==12)); then
continue 2 #结束j的本轮循环,跳到i的下一次循环
fi
printf "%d*%d=%-4d" $i $j $((i*j))
done
printf "\n"
done
[root@localhost tmp]# sh 1.sh
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10
3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25