9.Scripts
9.5.6 break
1.格式與說明
break n
n 表示跳出循環的層數,如果省略 n,則表示跳出當前的整個循環。break 關鍵字通常和 if 語句一起使用,即滿足條件時便跳出循環。
注:本圖有點小瑕疵,不該有“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 語句一起使用,即滿足條件時便跳出循環。
注:本圖有一點瑕疵,不該有“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