Shell双重循环、图形排列及九九乘法表
Shell双重循环、图形排列及九九乘法表
一、双重循环
1. 双重循环概述
双重循环需勋在两个及以上的自变量,一般用于多层循环判断中,比如将行和列设为两个自变量按一定规则顺序显示数据,可通过Shell脚本做出各种排列图形以及九九乘法表。
2. 双重循环结构
A{外层条件} --> B[外层语句1]
B --> C{内层条件}
C --> D[内层语句]
D --> E[外层语句2]
D --> |内层循环| C
E --> |外层循环| A
F[双重循环结构图]
循环必须是有规律的递增或递减,脚本从上至下执行,在没有break、exit、sleep、continue等结束语句时,循环语句块会逐条执行。
内层循环是外层循坏的一条循环语句,当变量满足外层循环的条件时,就会进入外层循环执行外层循环语句,当变量满足内层循环的条件时,转而执行内层循环,只有当内层循环结束才会跳出内层循环,然后继续外层循环语句的执行。
二、循环特殊操作
1. exit
停止循环,直接退出执行脚本
2. break
跳出当前循环,默认为break 1,后面数字为跳出层数,例如break 2为跳出2层循环。
3. return
return表示退出函数并返回一个退出值,脚本中可以用$?变量显示该值
使用原则:
(1)函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码;
(2)退出状态码必须是0~255,超出时返回值将为除以256后的取余数。
4. continue
终止某次循环中的命令,但不会完全终止整个命令,而是直接跳过满足条件的循环,即满足条件不循环,转而循环不满足的条件
5. sleep
sleep休眠,单位为秒,将线程休眠规定时间后继续执行,sleep(10)为休眠10秒。
6. delay
增加延时时间,单位为0.4毫秒,即延时一秒为delay(250)。
三、Shell图形排列
1. 直线
#!/bin/bash
for ((a=1; a<=20; a++)) #循环20次
do
echo -n "*" #不换行连续输出*
done
echo "" #末尾换行
[root@localhost ~]# ./zhixian.sh
********************
2. 矩形
(1)实心矩形
#!/bin/bash
for ((a=1; a<=5; a++)) #循环5次,设置行数
do
for ((b=1; b<=8; a++)) #循环8次,设置列数
do
echo -n "*"
done
echo “”
done
[root@localhost ~]# ./4.sh
********
********
********
********
********
(2)空心矩形
#!/bin/bash
for ((a=1; a<=5; a++))
do
if [ $a -eq 1 -o $a -eq 5 ];then
for ((b=1; b<=8; b++))
do
echo -n "*"
done
echo ""
else
echo -n "*"
for ((c=1; c<=6; c++))
do
echo -n " "
done
echo "*"
fi
done
[root@localhost ~]# ./kong4.sh
********
* *
* *
* *
********
3.三角形
(1)直角三角形
#!/bin/bash
for ((a=1; a<=6; a++))
do
for ((b=1; b<=a; b++))
do
echo -n "*"
done
echo ""
done
[root@localhost ~]# ./3.sh
*
**
***
****
*****
******
(2)倒直角三角形
#!/bin/bash
for ((a=1; a<=6; a++))
do
for ((b=6; b>=a; b--))
do
echo -n "*"
done
echo ""
done
[root@localhost ~]# ./dao3.sh
******
*****
****
***
**
*
(3)反三角
#!/bin/bash
for ((a=1; a<=6; a++))
do
for ((b=6; b>=a; b--))
do
echo -n " "
done
for ((c=1; c<=a; c++))
do
echo -n "*"
done
echo ""
done
[root@localhost ~]# ./fan3.sh
*
**
***
****
*****
******
(4)等腰三角形
#!/bin/bash
for ((a=1; a<=9; a++))
do
for ((b=9; b>=a; b--))
do
echo -n " "
done
m=$[($a*2) - 1]
for ((c=1; c<=$m; c++))
do
echo -n "*"
done
echo ""
done
[root@localhost ~]# ./dengyao3.sh
*
***
*****
*******
*********
***********
*************
***************
*****************
4. 平行四边形
#!/bin/bash
for ((a=1; a<=6; a++))
do
for ((b=6; b>=a; b--))
do
echo -n " "
done
for ((c=1; c<=6; c++))
do
echo -n "*"
done
echo ""
done:::
[root@localhost ~]# ./pingxing4.sh
******
******
******
******
******
******
5. 梯形
#!/bin/bash
for ((a=1; a<=6; a++))
do
for ((b=6; b>=a; b--))
do
echo -n " "
done
for ((c=1; c<=6+$a; c++))
do
echo -n "*"
done
echo ""
done
[root@localhost ~]# ./tixing.sh
*******
********
*********
**********
***********
************
6. 等腰梯形
#!/bin/bash
for ((a=1; a<=6; a++))
do
for ((b=6; b>=a; b--))
do
echo -n " "
done
for ((c=1; c<=6+$a; c++))
do
echo -n "*"
done
for ((d=1; d<=a; d++))
do
echo -n "*"
done
echo ""
done
[root@localhost ~]# ./dengyaotixing.sh
********
**********
************
**************
****************
******************
7. 菱形
#!/bin/bash
for ((a=1; a<=9; a++))
do
for ((b=8; b>=a; b--))
do
echo -n " "
done
m=$[($a*2) - 1]
for ((c=1; c<=$m; c++))
do
echo -n "*"
done
echo ""
done
for ((e=8; e>=1; e--))
do
for ((f=8; f>=e ; f--))
do
echo -n " "
done
n=$[($e*2) - 1]
for ((g=1 ; g<=$n ; g++))
do
echo -n "*"
done
echo ""
done
[root@localhost ~]# ./lingxing.sh
*
***
*****
*******
*********
***********
*************
***************
*****************
***************
*************
***********
*********
*******
*****
***
*
8. 可变菱形
#!/bin/bash
read -p "请输入数字:" num
for ((a=1; a<=num; a++))
do
for ((b=$num-1; b>=a; b--))
do
echo -n " "
done
m=$[($a*2) - 1]
for ((c=1; c<=$m; c++))
do
echo -n "*"
done
echo ""
done
for ((e=$num-1; e>=1; e--))
do
for ((f=$num-1; f>=e ; f--))
do
echo -n " "
done
n=$[($e*2) - 1]
for ((g=1 ; g<=$n ; g++))
do
echo -n "*"
done
echo ""
done
[root@localhost ~]# ./lingxing.sh
请输入数字:5
*
***
*****
*******
*********
*******
*****
***
*
[root@localhost ~]# ./lingxing.sh
请输入数字:8
*
***
*****
*******
*********
***********
*************
***************
*************
***********
*********
*******
*****
***
*
9. 五角星
#!/bin/bash
for((i=0; i<10; i++))
{
for ((j=1; j<20; j++))
{
echo -n " "
}
for ((j=10; j>i; j--))
{
echo -n " "
}
for ((j=0; j<i*2+1; j++))
{
echo -n "*"
}
echo ""
}
for ((i=0; i<6; i++))
{
for ((j=0; j<i*3; j++))
{
echo -n " "
}
for ((j=60; j>i*6; j--))
{
echo -n "*"
}
echo ""
}
for ((i=0; i<5; i++))
{
for ((j=17; j>i; j--))
{
echo -n " "
}
for ((j=0; j<25+i*2; j++))
{
echo -n "*"
}
echo ""
}
for ((i=1; i<=5; i++))
{
for ((j=12; j>=i; j--))
{
echo -n " "
}
for ((j=15; j>=i*3; j--))
{
echo -n "*"
}
for ((j=0; j<=i*8; j++))
{
echo -n " "
}
for ((j=15; j>=i*3; j--))
{
echo -n "*"
}
echo ""
}
[root@localhost ~]# ./5jiao.sh
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
************************************************************
******************************************************
************************************************
******************************************
************************************
******************************
*************************
***************************
*****************************
*******************************
*********************************
************* *************
********** **********
******* *******
**** ****
* *
四、九九乘法表
#!/bin/bash
for ((a=1; a<=9; a++))
do
for ((b=1; b<=a; b++))
do
sum=$[$a * $b]
echo -n "$a*$b=$sum "
done
echo ""
done
[root@localhost ~]# ./99.sh
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
Shell双重循环、图形排列及九九乘法表的更多相关文章
- 编写Java程序,使用循环结构打印出九九乘法表
编写Java程序,使用循环结构打印出九九乘法表 效果如下: 实现代码: public class Multiplication99 { public static void main(String[] ...
- For 循环的嵌套与九九乘法表
㈠通过程序,在页面中输入如下图形 * * * * * * * * * * * * * * * * * * * * * * * * * 代码如下: //向body中输入一个内容 //document. ...
- python—用for循环、while循环和一句话打印九九乘法表
用for循环打印九九乘法表: for i in range (1,10): for j in range(1,10): print(j,"x",i,"=",i* ...
- Oracle三种循环例题:打印九九乘法表
数据库SQL三种循环语句(For.While.Loop) --如果要将执行结果输出,需要先执行 setserveroutput on 命令,在窗口里显示服务器输出信息 set serveroutput ...
- 通过while循环一步步实现九九乘法表
# 打印#做出@列的效果height = int(input("height: ")) #用户输入一个高度 num_height = heightwhile num_height ...
- C语言for 循环 9*9 实现九九乘法表
#include <stdio.h> int main(void) { //for循环实现9*9乘法表 /* 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 */ ...
- 利用js的for循环实现一个简单的“九九乘法表”
For循环九九乘法表 for循环是javascript中一种常用的循环语句,可以很好的解决在程序中需要重复执行某些语句,利用for循环实现简单的“九九乘法表”的效果: 让循环从小到大,依次排序,并计算 ...
- Python中的九九乘法表(for循环)
用for循环写出的九九乘法表(包括函数的调用) #方向一 for i in range(1,10): for j in range(1,i+1): d = i * j ...
- 用for; while...do; do...while; 写出九九乘法表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- 关于ActiveMQ+Zookeeper做集群时,解决启动报错:java.io.IOException: com/google/common/util/concurrent/internal/InternalFutureFailureAccess
这个问题我也是无意间碰到的,之前一直是使用单机的ActiveMQ,所以也没这个问题,但是做集群时碰到这个问题,问题是这样子出现的: 首先,我准备了三台虚拟机,然后使用 Replicated Level ...
- UI自动化,通过Xpath结合父类、同级元素,查找到唯一的元素定位
UI自动化,通过Xpath定位的总结 当页面展示的内容的html布局格式一样,只能第几个控件的绝对定位来区分时,如果后面有变更控件的顺序,就会导致找不到这个元素,维护成本较高,可以尝试用其他的方式,比 ...
- 初识python: 装饰器
定义: 本质是函数,功能是"装饰"其它函数,即为其他函数添加附加功能原则: 1.不能修改被装饰函数的源代码: 2.不能修改被装饰函数的调用方式实现装饰器知识储备: 1.函数即&qu ...
- Flask_Flask-Mail邮件扩展(十三)
在开发过程中,很多应用程序都需要通过邮件提醒用户,Flask的扩展包Flask-Mail通过包装了Python内置的smtplib包,可以用在Flask程序中发送邮件. Flask-Mail连接到简单 ...
- vuex 中使用Element-ui的message
首先引入Message 其次,在mutations中调用Message 注意:缓存的问题,如果没有弹出框架出现,多重启几次服务 参考资料: https://blog.csdn.net/weixin_4 ...
- float类型数据精度问题:12.0f-11.9f=0.10000038,"减不尽"为什么?
现在我们就详细剖析一下浮点型运算为什么会造成精度丢失? 1.小数的二进制表示问题 首先我们要搞清楚下面两个问题: (1) 十进制整数如何转化为二进制数 算法很简单.举个例子,11表示成二进制数: 1 ...
- 接口神器之 Json Server 详细指南
简介 json-server 是一款小巧的接口模拟工具,一分钟内就能搭建一套 Restful 风格的 api,尤其适合前端接口测试使用. 只需指定一个 json 文件作为 api 的数据源即可,使用起 ...
- 机器学习|线性回归三大评价指标实现『MAE, MSE, MAPE』(Python语言描述)
原文地址 ?传送门 对于回归预测结果,通常会有平均绝对误差.平均绝对百分比误差.均方误差等多个指标进行评价.这里,我们先介绍最常用的3个: 平均绝对误差(MAE) 就是绝对误差的平均值,它的计算公式如 ...
- mybatis关联查询基础----高级映射
本文链接地址:mybatis关联查询基础----高级映射(一对一,一对多,多对多) 前言: 今日在工作中遇到了一个一对多分页查询的问题,主表一条记录对应关联表四条记录,关联分页查询后每页只显示三条记录 ...
- XSS-lab通过教程🐶
XSS-lab通过教程 Level-1 payload:http://192.168.33.222:40577/level1.php?name=<script>alert(123)< ...