• shell脚本之双重循环


    内容预知

     1.双重循环的介绍与运用

    1.1 双重循环的理解 

    1.2 双重循环的机制

    1.3 简单运用 :双重循环打印九九乘法表 

     2.循环的结束语句

    2.1循环结束语句的介绍

    2.2 break 语句

    2.3 exit 语句 

     3.双重循环之花式打印图形

    3.1 单层循环,点到线的打印 

     3.1.1 用星星符号打印一条横线

    3.1.2  用星号打印出一条竖线 

    3.2 双重循环,线构成面的打印

    3.2.1 实心矩形打印 

    3.2.2 打印空心的的矩形 

    3.2.3 打印平行四边形

    3.3 双重循环构造直角三角形

    3.3.1 构造直角三角形 

    3.3.2 构造倒立直角三角形

     3.4 打印等腰三角形

    3.4.1 数学法答应等腰三角形 

    3.4.2 拼接法拼出等腰三角形

     3.5 拼接法打印平行四边形

    3.6 打印梯形

    3.6.1 直角梯形

    3.6.2 等腰梯形

    3.7  打印 菱形

    3.7.1 菱形拼接(上半部分用拼接法,下半部分用数学法)

    3.7.2 输出可调控大小的菱形 


     1.双重循环的介绍与运用

    1.1 双重循环的理解 

     对于一些重复性动作我们可以用单层循环来满足重复性操作的需求,当这些重复性操作有了别的分支操作时,便不是一个变量就能够解决问题,所以我们要再引入一层循环,让操作的输出结果更见详细化或者是通过一个脚本满足更为复杂的循环需求

    1.2 双重循环的机制

     

     单层循环:执行命令从上至下依次执行命令,进行条件判断,如果没有达到退出循环的要求,

    便再次进行该操作

    双重循环:循环中嵌套循环(在这里我们将外面的循环称作外部循环,嵌套在里面的叫内部循环)

    当外部循环执行一次时,内部循环就要将自身的所有循环进行一遍,一整个双重循环结束后,内部循环执行的次数等于自己本身循环的所有次数乘以外部循环的所有循环次数

     运用演示:

    1. #!/bin/bash
    2. #这是一个双重循环的测试实验
    3. for ((i=1;i<=5;i++))
    4. do
    5. echo "=============这是外部循环执行的第 $i 次==================== "
    6. for ((a=1;a<=5;a++))
    7. do
    8. echo "这是内部循环执行的第 $a 次"
    9. done
    10. done

     

     

    结果执行:

     

    1.3 简单运用 :双重循环打印九九乘法表 

     

    1. #!/bin/bash
    2. i=1
    3. while [ $i -le 9 ]
    4. do
    5. a=1
    6. while [ $a -le $i ]
    7. do
    8. echo -n -e "$a*$i=$[i*a]\t"
    9. let a++
    10. done
    11. let i++
    12. echo ""
    13. done

     

    结果测试:

     

     

     2.循环的结束语句

    2.1循环结束语句的介绍

    shell脚本常用的循环语句有三种:exit   continue   break 

    正常的循环情况下for循环和while循环是只要条件符合就会一直循环下去,而until循环是只要条件不成立,就会一直循环。但是有时我们利用循环并不想要循环输出的全部结果,而是需要它的一部分结果时,这时便引入了结束语句来帮助我们获取指定范围内的循环输出结果,或者是让原本的死循环合理退出

     

    2.2 break 语句

    1)break 的默认作用是退出单层循环

     运用演示

    结果测试:

     

     

    2)但是当break后面跟上了数字以后,数字为多少时,就会退出多少层循环 

     运用演示:


     结果测试:

     

    2.3 exit 语句 

    1)exit的默认作用时直接结束脚本进程,到此代表着脚本的结束


    运用演示 

    测试结果:
     

     2)exit 后面跟上数字后  代表着结束该进程并且将该数字修改为新的返回码(代替$?中要输出的值)

    运用演示: 

     

     
    测试结果:  

     

     

     3.双重循环之花式打印图形

    3.1 单层循环,点到线的打印 

     

     3.1.1 用星星符号打印一条横线

     

    1. #!/bin/bash
    2. i=1
    3. while [ $i -le 9 ];
    4. do
    5. echo -n '*'
    6. let i++
    7. done
    8. echo ""

     输出结果:

    3.1.2  用星号打印出一条竖线 

     

    1. #!/bin/bash
    2. i=1
    3. while [ $i -le 9 ]
    4. do
    5. echo "*"
    6. let i++
    7. done

     

     输出结果:

     

    3.2 双重循环,线构成面的打印

     

    3.2.1 实心矩形打印 

    1. #!/bin/bash
    2. i=1
    3. while [ $i -le 9 ]
    4. do
    5. a=1
    6. while [ $a -le 9 ]
    7. do
    8. echo -n '*'
    9. let a++
    10. done
    11. echo ""
    12. let i++
    13. done

     

     

     输出结果:

     

    3.2.2 打印空心的的矩形 

    1. #!/bin/bash
    2. i=1
    3. while [ $i -le 9 ]
    4. do
    5. a=1
    6. while [ $a -le 9 ]
    7. do
    8. if [ $i -eq 1 -o $i -eq 9 ];then
    9. echo -n '*'
    10. else
    11. if [ $a -eq 1 -o $a -eq 9 ];then
    12. echo -n "*"
    13. else
    14. echo -n " "
    15. fi
    16. fi
    17. let a++
    18. done
    19. echo ""
    20. let i++
    21. done

     

     

     输出结果:

     

    3.2.3 打印平行四边形

     

     

    3.3 双重循环构造直角三角形

    3.3.1 构造直角三角形 

    1. #!/bin/bash
    2. i=1
    3. while [ $i -le 9 ]
    4. do
    5. a=1
    6. while [ $a -le $i ]
    7. do
    8. echo -n '*'
    9. let a++
    10. done
    11. echo ""
    12. let i++
    13. done

     

     

     输出结果:

     

    3.3.2 构造倒立直角三角形

    1. #!/bin/bash
    2. i=1
    3. while [ $i -le 9 ]
    4. do
    5. a=9
    6. while [ $a -ge $i ]
    7. do
    8. echo -n '*'
    9. let a--
    10. done
    11. echo ""
    12. let i++
    13. done

     

     

     

    输出结果: 

     

     3.4 打印等腰三角形

    3.4.1 数学法答应等腰三角形 

    1. #!/bin/bash
    2. #用数学公式打印等腰三角形
    3. i=1
    4. while [ $i -le 9 ]
    5. do
    6. a=9
    7. while [ $a -ge $i ]
    8. do
    9. echo -n ' '
    10. let a--
    11. done
    12. b=$[(i*2)-1]
    13. c=1
    14. while [ "$c" -le "$b" ]
    15. do
    16. echo -n '*'
    17. let c++
    18. done
    19. let i++
    20. echo ""
    21. done

     

     

     输出结果:

     

    3.4.2 拼接法拼出等腰三角形

     

     

    1. #用图形拼接出等腰三角形
    2. i=1
    3. while [ $i -le 9 ]
    4. do
    5. a=9
    6. while [ $a -ge $i ]
    7. do
    8. echo -n ' '
    9. let a--
    10. done
    11. b=1
    12. while [ $b -le $i ]
    13. do
    14. echo -n '*'
    15. let b++
    16. done
    17. c=2
    18. while [ $c -le $i ]
    19. do
    20. echo -n '*'
    21. let c++
    22. done
    23. let i++
    24. echo ""
    25. done

     

     

     

     输出结果:

     3.4.3 数学法打印倒立等腰三角形

     

    1. # 数学表达法打印倒等腰三角形
    2. d=9
    3. while [ $d -ge 1 ]
    4. do
    5. e=9
    6. while [ $e -ge $d ]
    7. do
    8. echo -n ' '
    9. let e--
    10. done
    11. f=$[(2*d)-1]
    12. g=1
    13. while [ $g -le $f ]
    14. do
    15. echo -n '*'
    16. let g++
    17. done
    18. let d--
    19. echo ""
    20. done

     

     

    输出结果:

     

     3.5 拼接法打印平行四边形

    1. #!/bin/bash
    2. i=1
    3. while [ $i -le 9 ]
    4. do
    5. b=1
    6. while [ $b -le $i ]
    7. do
    8. echo -n ' '
    9. let b++
    10. done
    11. a=1
    12. while [ $a -le 9 ]
    13. do
    14. echo -n '*'
    15. let a++
    16. done
    17. echo ""
    18. let i++
    19. done
    20. ~

     

     输出结果:

     同理:先打印一个空格填充的倒立直角三角形在打印一个矩形

    就可以得到不同方向的平行四边形

    3.6 打印梯形

    3.6.1 直角梯形

    1. #!/bin/bash
    2. i=1
    3. while [ $i -le 9 ]
    4. do
    5. a=1
    6. while [ $a -le 9 ]
    7. do
    8. echo -n '*'
    9. let a++
    10. done
    11. b=1
    12. while [ $b -le $i ]
    13. do
    14. echo -n '*'
    15. let b++
    16. done
    17. let i++
    18. echo ""
    19. done

     

     输出结果:

     同理:一个空格填满的倒立直角三角形,接星号填满的剩余矩形部分,再加上另一个矩形

    即可形成换方向的直角梯形

     

    3.6.2 等腰梯形

     方法一:

     上面两个不同方向的直角梯形拼接即可

     

    方法二: 

    等腰三角形,起始行进行改变即可(数学方法:等腰三角形切割掉顶角就是等腰梯形) 

     

     

     

    3.7  打印 菱形

     

    3.7.1 菱形拼接(上半部分用拼接法,下半部分用数学法)

     

    1. #!/bin/bash
    2. #使用拼接法加数学表达法实现菱形的打印
    3. #上半部分为图形拼接的等腰三角形
    4. i=1
    5. while [ $i -le 9 ]
    6. do
    7. a=9
    8. while [ $a -ge $i ]
    9. do
    10. echo -n ' '
    11. let a--
    12. done
    13. b=1
    14. while [ $b -le $i ]
    15. do
    16. echo -n '*'
    17. let b++
    18. done
    19. c=2
    20. while [ $c -le $i ]
    21. do
    22. echo -n '*'
    23. let c++
    24. done
    25. echo ""
    26. let i++
    27. done
    28. #下半部分为 数学表达法的倒等腰三角形
    29. d=8
    30. while [ $d -ge 1 ]
    31. do
    32. e=9
    33. while [ $e -ge $d ]
    34. do
    35. echo -n ' '
    36. let e--
    37. done
    38. f=$[(2*d)-1]
    39. g=1
    40. while [ $g -le $f ]
    41. do
    42. echo -n '*'
    43. let g++
    44. done
    45. let d--
    46. echo ""
    47. done

     

     输出结果:

     

    3.7.2 输出可调控大小的菱形 

     中心思维:把原本定好的行数改变成一个变量,下半部分倒立的等腰三角形变为变量减一即可

     

    1. #!/bin/bash
    2. #使用拼接法加数学表达法实现菱形的打印
    3. #上半部分为图形拼接的等腰三角形
    4. read -p "请输入数字来控制菱形的大小,建议范围在(8-20)" num
    5. i=1
    6. while [ $i -le $num ]
    7. do
    8. a=$num
    9. while [ $a -ge $i ]
    10. do
    11. echo -n ' '
    12. let a--
    13. done
    14. b=1
    15. while [ $b -le $i ]
    16. do
    17. echo -n '*'
    18. let b++
    19. done
    20. c=2
    21. while [ $c -le $i ]
    22. do
    23. echo -n '*'
    24. let c++
    25. done
    26. echo ""
    27. let i++
    28. done
    29. #下半部分为 数学表达法的倒等腰三角形
    30. d=$[num-1]
    31. while [ $d -ge 1 ]
    32. do
    33. e=$num
    34. while [ $e -ge $d ]
    35. do
    36. echo -n ' '
    37. let e--
    38. done
    39. f=$[(2*d)-1]
    40. g=1
    41. while [ $g -le $f ]
    42. do
    43. echo -n '*'
    44. let g++
    45. done
    46. let d--
    47. echo ""
    48. done

    测试结果:

     

  • 相关阅读:
    计算机网络 --- TCP与UDP协议
    数据处理生产环境_获取当前日期的前一天日期
    操作系统01_进程管理_---软考高级系统架构师006
    用七步解决所有质量问题
    vue3使用router的时候出现问题
    要想组建敏捷团队,这些方法不可少
    抓到Dubbo异步调用的小BUG,再送你一个贡献开源代码的机会
    Windows端口号被占用的查看方法及解决办法
    java计算机毕业设计科技项目在线评审系统源码+mysql数据库+系统+lw文档+部署
    分析师:百度到2030年可能成为中国市值最高的公司
  • 原文地址:https://blog.csdn.net/qq_62462797/article/details/126606243