shell学习13:break 2 和continue 2的用法

break 是终止一层循环,那break 2就是终止两层循环;continue 是跳过一次循环,但continue 2就是跳过两个循环。

先看break的测试代码:

  1 #!/bin/bash
  2 #
  3 for i in 1 2 3 4 5
  4 do
  5     for j in 1 2 3 4 5
  6     do
  7         echo "i*j=$i*$j"
  8         if [ $j -eq 2 ]
  9         then
 10             break
 11         fi
 12     done
 13 done
 14 exit

测试结果:

gyz@debian:~/shelltest$ ./brk.sh 
i*j=1*1
i*j=2*1
i*j=3*1
i*j=4*1
i*j=5*1

break2的测试代码:

 1 #!/bin/bash
  2 #
  3 for i in 1 2 3 4 5
  4 do
  5     for j in 1 2 3 4 5
  6     do
  7         echo "i*j=$i*$j"
  8         if [ $j -eq 2 ]
  9         then
 10             break 2
 11         fi
 12     done
 13 done
 14 exit

 执行结果:

gyz@debian:~/shelltest$ ./brk.sh 
i*j=1*1

continue 的测试代码:

  1 #!/bin/bash
  2 #
  3 for i in 1 2 3 4 5
  4 do
  5     for j in 1 2 3 4 5
  6     do
  7         if [ $j == 2 ]
  8         then
  9             continue 
 10         fi
 11         echo "i*j=$i*$j"
 12     done
 13 done
 14 exit

测试结果:

gyz@debian:~/shelltest$ ./brk.sh 
i*j=1*1
i*j=1*2
i*j=1*3
i*j=1*4
i*j=1*5
            注意这行
i*j=3*1
i*j=3*2
i*j=3*3
i*j=3*4
i*j=3*5
i*j=4*1
i*j=4*2
i*j=4*3
i*j=4*4
i*j=4*5
i*j=5*1
i*j=5*2
i*j=5*3
i*j=5*4
i*j=5*5

 continue 2测试代码:

 1 #!/bin/bash
  2 #
  3 for i in 1 2 3 4 5
  4 do
  5     for j in 1 2 3 4 5
  6     do
  7         if [ $j == 2 ]
  8         then
  9             continue 2
 10         fi
 11         echo "i*j=$i*$j"
 12     done
 13 done
 14 exit

 运行结果:

gyz@debian:~/shelltest$ ./brk.sh 
i*j=1*1
i*j=2*1
i*j=3*1
i*j=4*1
i*j=5*1

参考:陈祥琳 编 《linux shell 脚本编程从入门到精通》

你可能感兴趣的:(shell学习之路)