Linux Shell流程控制跳出循环break 命令、continue

在Shell中,break和continue命令用于控制循环,其中break命令用于立即停止循环,而continue命令用于跳过当前循环迭代。下面分别进行详细讲解并举例。

break命令
break命令用于立即停止循环。当break命令在循环中执行时,它会立即跳出循环,不再执行循环中剩余的迭代。

语法:

break [n]

其中n为循环级别。默认情况下,n为1,即跳出当前循环。如果在多重循环中使用break命令,则可以通过指定n的值来指定要跳出的循环级别。

下面是一个使用break命令的示例,该示例使用while循环来查找第一个大于10的数字:

#!/bin/bash

array=(2 4 6 8 10 12 14 16 18 20)

i=0

while [ $i -lt ${#array[@]} ]
do
  if [ ${array[$i]} -gt 10 ]
  then
    echo "The first number greater than 10 is ${array[$i]}."
    break
  fi
  i=$((i+1))
done
输出:
The first number greater than 10 is 12.

在上面的示例中,当if语句的条件满足时,使用break命令立即停止循环,并输出第一个大于10的数字。

continue命令
continue命令用于跳过当前循环迭代。当continue命令在循环中执行时,它会跳过当前迭代并继续执行下一次迭代。

语法:

continue [n]

其中n为循环级别。默认情况下,n为1,即跳过当前循环。如果在多重循环中使用continue命令,则可以通过指定n的值来指定要跳过的循环级别。

下面是一个使用continue命令的示例,该示例使用for循环来计算数组中所有偶数的和:

#!/bin/bash

array=(1 2 3 4 5 6 7 8 9 10)

sum=0

for i in ${array[@]}
do
  if [ $(($i % 2)) -ne 0 ]
  then
    continue
  fi
  sum=$(($sum+$i))
done

echo "The sum of even numbers is $sum."
输出:
The sum of even numbers is 30.

在上面的示例中,使用if语句和continue命令来跳过数组中的所有奇数,只计算偶数的总和。