shell循环-双重循环

245 阅读2分钟

前言

双重循环需要两个及以上的自变量,一般用于多层循环判断中,比如将行和列设为两个自变量按一定规则顺序显示数据,可通过Shell脚本做出各种排列图形以及九九乘法表。

双重循环概述

循环必须是有规律的递增或递减,脚本从上至下执行,在没有break、exit、sleep、continue等结束语句时,循环语句块会逐条执行。
内层循环是外层循坏的一条循环语句,当变量满足外层循环的条件时,就会进入外层循环执行外层循环语句,当变量满足内层循环的条件时,转而执行内层循环,只有当内层循环结束才会跳出内层循环,然后继续外层循环语句的执行。

退出循环

双重循环 Snipaste_2022-08-31_10-46-16.png

Snipaste_2022-08-31_10-46-28.png

exit

退出当前shell脚本。脚本中exit执行后,脚本后面所有的语句都不会被执行。

Snipaste_2022-08-31_10-48-20.png Snipaste_2022-08-31_10-51-16.png exit加数字的话返回状态码为当前取值 Snipaste_2022-08-31_11-01-27.png Snipaste_2022-08-31_11-05-28.png

break

跳出当前循环,默认为break 1,后面数字为跳出层数,例如break 2为跳出2层循环。

Snipaste_2022-08-31_10-53-46.png Snipaste_2022-08-31_10-56-41.png

循环内break之后的语句都不会执行,但循环外的语句仍然会执行

continue

终止某次循环中的命令,但不会完全终止整个命令,而是直接跳过满足条件的循环,即满足条件不循环,继而循环不满足的条件。【continue一般用于for循环。在while和until中要注意,如果变量迭代语句放在continue之后,那么迭代不会执行,会造成死循环。】

Snipaste_2022-08-31_11-17-14.png

Snipaste_2022-08-31_11-18-07.png

双重循环打印图形

for循环

打印九九乘法表

Snipaste_2022-08-31_10-01-09.png Snipaste_2022-08-31_10-01-36.png

1-1.矩形

Snipaste_2022-08-31_09-34-21.png Snipaste_2022-08-31_09-34-31.png

1-2.空心矩形(for循环)

Snipaste_2022-08-31_09-09-58.png Snipaste_2022-08-31_09-10-16.png

1-2.空心矩形(while循环)

Snipaste_2022-08-31_09-11-10.png Snipaste_2022-08-31_09-11-33.png

1-3.平行四边形

Snipaste_2022-08-31_09-12-59.png

Snipaste_2022-08-31_09-13-13.png

2-1.直角三角形

Snipaste_2022-08-31_09-19-36.png Snipaste_2022-08-31_09-21-55.png

2-2.倒直角三角形

Snipaste_2022-08-31_09-23-47.png Snipaste_2022-08-31_09-24-02.png

Snipaste_2022-08-31_09-25-08.png Snipaste_2022-08-31_09-25-20.png

3-1.等腰三角形

图形拼接 Snipaste_2022-08-31_09-26-11.png Snipaste_2022-08-31_09-26-23.png

数学公式

Snipaste_2022-08-31_09-27-04.png Snipaste_2022-08-31_09-27-16.png

3-2.倒等腰三角形

数学公式 Snipaste_2022-08-31_09-28-02.png Snipaste_2022-08-31_09-28-14.png

图形拼接

Snipaste_2022-08-31_09-28-55.png Snipaste_2022-08-31_09-29-09.png

4-1.直角梯形

Snipaste_2022-08-31_09-13-47.png Snipaste_2022-08-31_09-14-07.png

4-2.等腰梯形

Snipaste_2022-08-31_09-14-41.png Snipaste_2022-08-31_09-15-01.png

5-1.菱形

Snipaste_2022-08-31_09-30-05.png Snipaste_2022-08-31_09-30-22.png

实例
实例一:将一个点分十进制格式的IP地址转换成点分二进制格式。

Snipaste_2022-08-31_12-02-14.png Snipaste_2022-08-31_12-02-27.png

实例二:输出环境变量PATH的目录所包含的所有可执行文件。

Snipaste_2022-08-31_12-42-38.png Snipaste_2022-08-31_12-43-06.png

实例三:写一个逛网上商城选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。

Snipaste_2022-08-31_13-24-15.png

Snipaste_2022-08-31_13-23-09.png