内容预知

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 双重循环的机制

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

便再次进行该操作

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

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

 运用演示:

#!/bin/bash#这是一个双重循环的测试实验for ((i=1;i<=5;i++))
doecho "=============这是外部循环执行的第 $i 次==================== "for  ((a=1;a<=5;a++))doecho  "这是内部循环执行的第 $a 次" donedone

结果执行:

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

#!/bin/bash
i=1
while [  $i  -le  9  ]
doa=1while [ $a -le $i  ]doecho -n -e "$a*$i=$[i*a]\t" let a++donelet i++echo ""
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 用星星符号打印一条横线

#!/bin/bashi=1
while [ $i -le 9  ];
doecho  -n '*'let i++
done
echo ""

 输出结果:

3.1.2  用星号打印出一条竖线

#!/bin/bashi=1
while [ $i -le  9   ]
do
echo "*"
let i++
done

 输出结果:

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

3.2.1 实心矩形打印

#!/bin/bashi=1
while [ $i  -le  9   ]
doa=1while [  $a  -le 9  ]doecho -n '*'let a++doneecho ""let i++
done

 输出结果:

3.2.2 打印空心的的矩形

#!/bin/bashi=1
while [ $i  -le  9   ]
doa=1while [  $a  -le 9  ]doif [ $i -eq 1 -o $i -eq  9   ];thenecho -n '*'elseif  [ $a -eq 1  -o $a -eq 9   ];thenecho -n "*"elseecho -n " "fifilet a++doneecho ""let i++
done

 输出结果:

3.2.3 打印平行四边形

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

3.3.1 构造直角三角形

#!/bin/bashi=1
while [ $i -le 9 ]
doa=1while [ $a -le $i    ]doecho -n '*'let a++doneecho ""let i++
done

 输出结果:

3.3.2 构造倒立直角三角形

#!/bin/bash
i=1
while [ $i -le 9  ]
doa=9while [ $a -ge $i  ]doecho -n '*'let a--doneecho ""let i++
done

输出结果: 

3.4 打印等腰三角形

3.4.1 数学法答应等腰三角形

#!/bin/bash#用数学公式打印等腰三角形
i=1
while [ $i  -le 9  ]
doa=9while [ $a  -ge  $i  ]doecho -n ' 'let a--doneb=$[(i*2)-1]c=1while [ "$c" -le "$b"  ]doecho -n '*'let c++donelet i++echo  ""done

 输出结果:

3.4.2 拼接法拼出等腰三角形

#用图形拼接出等腰三角形i=1
while [ $i -le  9 ]
doa=9while [ $a -ge $i    ]doecho -n ' 'let a--doneb=1while [ $b -le $i ]doecho -n '*'let b++donec=2while [ $c -le $i ]doecho -n '*'let c++done
let i++
echo ""
done

 输出结果:

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

# 数学表达法打印倒等腰三角形
d=9
while [ $d -ge 1  ]
doe=9while [ $e -ge $d ]doecho -n ' 'let e--donef=$[(2*d)-1]g=1while [ $g -le $f ]  doecho -n '*'let g++done
let d--
echo ""
done

输出结果:

3.5 拼接法打印平行四边形

#!/bin/bashi=1
while [ $i  -le 9  ]
dob=1while [ $b  -le $i ]doecho -n ' 'let b++donea=1while [ $a  -le 9  ] doecho -n '*'let a++doneecho ""
let i++
done
~                                            

 输出结果:

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

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

3.6 打印梯形

3.6.1 直角梯形

#!/bin/bash
i=1
while [ $i -le 9 ]
doa=1while [ $a -le 9 ]doecho -n '*'let a++doneb=1while [ $b  -le $i ]doecho -n '*'let b++done
let i++
echo ""
done

 输出结果:

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

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

3.6.2 等腰梯形

 方法一:

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

方法二: 

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

3.7  打印 菱形

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

#!/bin/bash#使用拼接法加数学表达法实现菱形的打印#上半部分为图形拼接的等腰三角形
i=1
while [ $i -le 9 ]
doa=9while [ $a  -ge  $i ]doecho -n  ' 'let a--doneb=1while [ $b -le  $i ]doecho -n '*'let b++donec=2while [ $c -le  $i   ]doecho -n '*'let c++done
echo ""
let i++
done#下半部分为 数学表达法的倒等腰三角形
d=8
while [ $d -ge 1  ]
doe=9while [ $e -ge $d ]doecho -n ' 'let e--donef=$[(2*d)-1]g=1while [ $g -le $f ]  doecho -n '*'let g++done
let d--
echo ""
done

 输出结果:

3.7.2 输出可调控大小的菱形

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

#!/bin/bash#使用拼接法加数学表达法实现菱形的打印#上半部分为图形拼接的等腰三角形
read -p "请输入数字来控制菱形的大小,建议范围在(8-20)"  num
i=1
while [ $i -le $num ]
doa=$numwhile [ $a  -ge  $i ]doecho -n  ' 'let a--doneb=1while [ $b -le  $i ]doecho -n '*'let b++donec=2while [ $c -le  $i   ]doecho -n '*'let c++done
echo ""
let i++
done#下半部分为 数学表达法的倒等腰三角形
d=$[num-1]
while [ $d -ge 1  ]
doe=$numwhile [ $e -ge $d ]doecho -n ' 'let e--donef=$[(2*d)-1]g=1while [ $g -le $f ]  doecho -n '*'let g++done
let d--
echo ""
done

测试结果:

shell脚本之双重循环相关推荐

  1. linux sh脚本 while,Linux shell脚本使用while循环执行ssh的注意事项

    原标题:Linux shell脚本使用while循环执行ssh的注意事项 如果要使用ssh批量登录到其它系统上操作时,我们会采用循环的方式去处理,那么这里存在一个巨大坑,你必须要小心了. 一.场景还原 ...

  2. shell脚本之for循环

    shell脚本之for循环 author :headsen  chen       2017-10-18    09:50:41 个人原创,转载请注明.否则依法追究法律责任 1,cat forloop ...

  3. shell脚本编程for循环求阶乘_shell脚本编程(完结版).pdf

    shell脚本编程(完结版) Shell 脚本编程学习笔记 2013 年 5 月 2 日 追风~忆梦 如有任何疑问,请联系作者,作者 QQ:1028150787,或者到韦东山群共同讨论 1 Shell ...

  4. Shell脚本三种循环

    Shell脚本三种循环 文章目录 Shell脚本三种循环 一.for循环 for语句结构 二.while循环 while语句结构 三.until循环 until语句结构 四.常用转义字符 一.for循 ...

  5. 【Shell】Shell脚本(for循环,while循环,break跳出循环,continue结束本次循环)

    目录 for循环 设置for 循环的分隔符 while循环 until循环 SHELL加法运算及I++ 有两个命令能帮我们控制循环内部的情况: break命令 continue命令 break命令是退 ...

  6. 【shell】shell脚本实战-for循环

    文章目录 前言 for循环介绍 for循环的语法分析 for循环应用举例 1. 从命令中取值 2. 输出从1到10 3. 批量用户处理 4. ping命令最经典的脚本 5. 批量重命名文件 总结 前言 ...

  7. 怎么编写Linux脚本循环语句,shell脚本及常用循环语句

    博文结构 什么是shell 简单编辑shell 循环语句 一.什么是shell及作用 Shell字面理解就是个"壳",是操作系统(内核)与用户之间的桥梁,充当命令解释器的作用,将用 ...

  8. shell 脚本中while 循环只执行一次的问题

    自己写的一个获取所有远程服务器数据库启动配置信息的bash 脚本,发现循环里的ssh远程命令只能执行一次,感觉很奇怪,以前没这么使用过, 我的脚本为 #!/bin/bash ## generate a ...

  9. Shell脚本之多重循环

    文章目录 1 多重循环小实验 案例一:九九乘法表 案例二:矩形 空心矩形 案例三:三角形 正直角三角形 倒直角三角形 反直角三角形 等腰三角形 案例四:菱形 可调节大小菱形 案例五:平行四边形 案例六 ...

最新文章

  1. 介绍微服务框架Micro笔记
  2. jQuery 基础教程 (二)之jQuery对象与DOM对象
  3. 创建MySQL数据库的副本_MySQL创建数据库(CREATE DATABASE语句)
  4. 团队开发冲刺1.2(2015.5.10)
  5. python输出大字号汉字_Python中输出ASCII大文字、艺术字、字符字小技巧
  6. dataframe一列按长度补0_Pandas中Series和DataFrame基础功能详解
  7. Go语言实现线程安全访问队列
  8. PTA 程序设计天梯赛(81~100题)
  9. [清华集训2016]温暖会指引我们前行——LCT+最大生成树
  10. pivot position_PIVOT用法详解
  11. Python详细知识体系总结(2021版)
  12. Java jar 包免费下载(全)
  13. 首次项目经验总结(一)
  14. 查看redis安装路径
  15. uikit框架_UIkit框架的口哨之旅
  16. pycharm 添加已有文件
  17. asp.net实现MD5加密
  18. 商业智能BI财务分析,如何从财务指标定位到业务问题
  19. 避免卷入办公室政治-开发就是这么坑!
  20. android-17手机,安卓手机好评排行:魅族17第四,小米10至尊第六,第一名意料之中...

热门文章

  1. 华为p50鸿蒙系统手机价格,华为P50系列屏幕、镜头、芯片、价格全曝光,预装鸿蒙系统?...
  2. 第9章 虚拟专用网 技术原理与应用
  3. “影响力”就是你存在的价值。文/江湖一剑客
  4. 数理逻辑4 -- 公理化集合论16
  5. 仙境传说RO守护永恒的爱 炼金脚本
  6. 网关Gateway-快速上手
  7. LoadRunner 2016首次更新,增强多项功能,支持更多平台|附下载
  8. ar面部识别_苹果现场演示四款 AR 内容,iPhone X 面部识别效果惊艳
  9. 使用barrier共享键鼠
  10. 大数据相关概念-什么是算子