1、双重循环概述
- 双重循环需要具备的前提——存在两个以上的自变量。
- 执行机制:
- 循环必须是有规律的递增或递减,脚本从上至下执行。
- 在没有break、exit、continue等结束语句时,循环语句会逐条执行。外层循环每执行一次,内层循环都要全部执行完毕,下一次外层循环才能再执行。
- 可以把内层循环,看作外层循环的一个命令语句。
双重循环演示:
外层循环5次,内层循环5次。
注:
外层循环 you idiot 每执行一次,内循环 fucking piece of shit 执行五次 。
2、shell脚本退出循环语句
2.1 break
break的作用:
- 跳出单层循环,默认为break 1,后面的数字为跳出层数。例如"break 2"为跳出2层循环。
- 循环内break之后的语句都不会执行,但循环外的语句仍然会执行。常用命令-break命令主要用于结束for,while或until循环
break 结束for,while或until循环。
在内层循环的输出语句上方,增加 if 语句判断,当内存循环到达第三次时,执行break跳出内层循环。
效果:外层循环5次,内存循环1次。(内层循环每到达第2次时,就跳出内层循环,执行下一次外层循环。)
2.2 exit
exit的作用: exit命令用于退出当前shell,在shell脚本中可以终止当前脚本执行。
示例:
在内层循环的输出语句上方,增加 if 语句判断,当内存循环到达第三次时,执行exit退出脚本。
效果:外层循环只执行1次,内存循环只执行2次。
2.3 continue
continue的作用:
用命令continue用于结束本次循环, 继续执行下一个for, while或until循环; 可指定从第几层循环继续执行
3、使用双重循环输出图形
外层循环用于表示行数。
内层循环用于表示列数。
3.1 图形1:实心矩形
每一行打印10个星星,一共打印5行。
3.2 图形2:空心矩形
步骤1:第1行和第5行,输出20个星星。
步骤2:第2~4行,输出1个星星。再输出8个空格。最后再输出1个星星。
3.3 图形3: 直角三角形
第一行输出1个星星,
第二行输出2个星星,
第三行输出3个星星,
以次类推,
直到第九行输出9个星星。
方法1
方法2
3.4 图形4: 倒直角三角形
第一行打印9个星星;
第二行打印8个星星;
第三行打印7个星星;
以此类推,
直到第九行打印1个星星。
3.5 图形: 反直角三角形
先输出一个空格填充的倒直角三角形,再输出一个星星填充的直角三角形。
3.6 图形6: 等腰三角形
方法一:
反直角三角形+正直角三角形
方法二 数学方法:
先输出一个空格填充的倒直角三角形;之后输出每行的*,每行的*个数=行数×2-1。
3.7 图形7:倒等腰三角形
方法一:
先输出一个空格直角三角形,再输出一个 * 填充的反直角三角形,最后输出一个 * 填充的倒直角三角形。
方法二 数学法:
先输出一个空格填充的倒直角三角形;之后输出每行的*,每行的*个数=行数×2-1。