1、双重循环概述
1.1 双重循环需要具备的前提——存在两个以上的自变量。
- 执行机制
- 循环必须是有规律的递增或递减,脚本从上至下执行。
- 在没有break、exit、continue等结束语句时,循环语句会逐条执行。外层循环每执行一次,内层循环都要全部执行完毕,下一次外层循环才能再执行。
- 可以把内层循环,看作外层循环的一个命令语句。
双重循环演示:
外层循环5次,内层循环5次。
[root@localhost ~]# vim shuang.sh
#!/bin/bash
#外层循环
for ((i=1;i<=5;i++))
do
echo 外部循环:$i"
#内层循环
for ((j=1;j<=5;j++))
do
echo " 内部循环:$j"
done
done
2、shell脚本退出循环语句
2.1 exit
- exit的作用:
退出shell脚本。exit执行后,脚本后面所有的语句都不会执行。
- 示例
在内层循环的输出语句上方,增加 if 语句判断,当内存循环到达第三次时,执行exit退出脚本。
效果:外层循环只执行1次,内存循环只执行2次。
#!/bin/bash
#外层循环
for ((i=1;i<=5;i++))
do
echo "外部循环:$i"
#内层循环
for ((j=1;j<=5;j++))
do
#当内层循环到达第三次时,exit退出脚本
if [ $j -eq 3 ]
then
exit
fi
echo " 外部循环:$j"
done
done
2.2 break
- break的作用:
- 跳出单层循环,默认为break 1,后面的数字为跳出层数。例如"break 2"为跳出2层循环。
- 循环内break之后的语句都不会执行,但循环外的语句仍然会执行。
- 示例
在内层循环的输出语句上方,增加 if 语句判断,当内存循环到达第三次时,执行break跳出内层循环。
效果:外层循环5次,内存循环2次。(内层循环每到达第3次时,就跳出内层循环,执行下一次外层循环。)
#!/bin/bash
#外层循环
for ((i=1;i<=5;i++))
do
echo "外部循环:$i"
#内层循环
for ((j=1;j<=5;j++))
do
#当内层循环到达第三次时,break跳出内层循环
if [ $j -eq 3 ]
then
break
fi
echo " 外部循环:$j"
done
done
2.3 continue
- continue的作用:
- 终止某次循环的执行,本次循环continue后面的语句不会执行,但不会完全终止整个循环。就是直接跳过满足条件的循环,即满足条件的不执行。
- continue一般用于for循环。在while和until中要慎用,因为如果变量迭代语句放在continue之后,那么迭代不会执行,会造成死循环。
示例:
在内层循环的输出语句上方,增加 if 语句判断,当内存循环到达第三次时,执行continue跳出本次循环。
效果:外层循环5次,内存循环跳过第3次,执行第1、2、4、5次。
#!/bin/bash
#外层循环
for ((i=1;i<=5;i++))
do
echo "外部循环:$i"
#内层循环
for ((j=1;j<=5;j++))
do
#当内层循环到达第三次时,continue跳过本次循环
if [ $j -eq 3 ]
then
continue
fi
echo " 外部循环:$j"
done
done