linux控制循环

可以控制循环内部的两条命令:break命令 continue命令

break命令

break命令是在处理过程中跳出循环的一种简单方法。可以使用break命令跳出任何类型的循环,包括while循环和until循环

  1. 跳出单循环

#!/bin/bash

#breaking out of a for loop

for var1 in 1 2 3 4 5

do

 if [ $var1 -eq 3 ]

 then

 break

 fi

 echo "Iteration number:$var1"

done

echo "The for loop in completed"

当var1=3时,跳出循环!

[root@localhost ~]# ./test17.sh 

Iteration number:1

Iteration number:2

The for loop in completed

2.跳出内循环

#!/bin/bash

#breaking out of an inner loop

 for (( a = 1; a < 4; a++ ))

do

 echo "out   side   loop:$a"

 for (( b = 1; b < 100; b++  ))

 do

 if [ $b -eq 5 ]

 then

 break

 fi

 echo "In  loop:$b"

 done

done


[root@localhost ~]# ./test19.sh 

out   side   loop:1

In  loop:1

In  loop:2

In  loop:3

In  loop:4

out   side   loop:2

In  loop:1

In  loop:2

In  loop:3

In  loop:4

out   side   loop:3

In  loop:1

In  loop:2

In  loop:3

In  loop:4

3.跳出外循环:break n

n表明要跳出的循环级别,默认n=1,代表跳出当前循环!若n=2,将停止外循环

#!/bin/bash

#breaking out of an outer loo

  for (( a = 1; a < 4; a++ ))

do

  echo "Out  Loop:$a"

  for (( b = 1; b <100; b++ ))

  do

  if [ $b -gt 4 ]

  then

  break 2

  fi

  echo "Inner loop:$b"

  done

done

[root@localhost ~]# ./test20.sh 

Out  Loop:1

Inner loop:1

Inner loop:2

Inner loop:3

Inner loop:4


continue命令

continue是一种提前停止循环内命令,而不完全终止循环方法!

#!/bin/bash

#using the continue command

  for (( var1 = 1; var1 < 13; var1++ ))

do

  if [ $var1 -gt 3 ] && [ $var1 -lt 10 ]

then

  continue

fi

  echo "Iteration Number:$var1"

done


[root@localhost ~]# ./test21.sh 

Iteration Number:1

Iteration Number:2

Iteration Number:3

Iteration Number:10

Iteration Number:11

Iteration Number:12

if-then语句条件(值大于5小于10)满足时,shell执行continue命令,跳过该循环中剩下的命令,但是循环继续进行!如果if-the语句条件不满足时,那么循环恢复正常!

与break命令一样,continue命令也可以指定循环级别:

continue n

#!/bin/bash

#testing an outer loop

for (( a = 1; a <= 3; a++ ))

do

 echo "Iteration $a"

 for (( b = 1; b < 4; b++ ))

do

 if [ $a -gt 2 ] && [ $a -lt 4 ]

then

 continue 2

 fi

 var3=$[ $a * $b ]

 echo "The result of $a * $b is $var3"

done

done


[root@localhost ~]# ./test22.sh 

Iteration 1

The result of 1 * 1 is 1

The result of 1 * 2 is 2

The result of 1 * 3 is 3

Iteration 2

The result of 2 * 1 is 2

The result of 2 * 2 is 4

The result of 2 * 3 is 6

Iteration 3


重定向循环的输出:

#!/bin/bash

  for (( a = 1; a < 10; a++ ))

do

  echo "The number is $a"

done > test23.txt

  echo "The command is finished"

[root@localhost ~]# ./test23.sh

The command is finished

[root@localhost ~]# cat test23.txt 

The number is 1

The number is 2

The number is 3

The number is 4

The number is 5

The number is 6

The number is 7

The number is 8

The number is 9


本文出自 “linux运维分享” 博客,请务必保留此出处http://liangey.blog.51cto.com/9097868/1574060

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。