Linux-scripts-循环控制

9.Scripts

本章同步视频:https://edu.51cto.com/sd/e4874

9.5.6 break

1.格式与说明

break n

       n 表示跳出循环的层数,如果省略 n,则表示跳出当前的整个循环。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。

                                              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 语句一起使用,即满足条件时便跳出循环。

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 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章