Shell双重循环、图形排列及九九乘法表

一、双重循环

1. 双重循环概述

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

2. 双重循环结构

graph TD
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双重循环、图形排列及九九乘法表的更多相关文章

  1. 编写Java程序,使用循环结构打印出九九乘法表

    编写Java程序,使用循环结构打印出九九乘法表 效果如下: 实现代码: public class Multiplication99 { public static void main(String[] ...

  2. For 循环的嵌套与九九乘法表

    ㈠通过程序,在页面中输入如下图形 * * * * * * * * * * * * * * * * * * * * * * * * *  代码如下: //向body中输入一个内容 //document. ...

  3. python—用for循环、while循环和一句话打印九九乘法表

    用for循环打印九九乘法表: for i in range (1,10): for j in range(1,10): print(j,"x",i,"=",i* ...

  4. Oracle三种循环例题:打印九九乘法表

    数据库SQL三种循环语句(For.While.Loop) --如果要将执行结果输出,需要先执行 setserveroutput on 命令,在窗口里显示服务器输出信息 set serveroutput ...

  5. 通过while循环一步步实现九九乘法表

    # 打印#做出@列的效果height = int(input("height: ")) #用户输入一个高度 num_height = heightwhile num_height ...

  6. 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 */ ...

  7. 利用js的for循环实现一个简单的“九九乘法表”

    For循环九九乘法表 for循环是javascript中一种常用的循环语句,可以很好的解决在程序中需要重复执行某些语句,利用for循环实现简单的“九九乘法表”的效果: 让循环从小到大,依次排序,并计算 ...

  8. Python中的九九乘法表(for循环)

    用for循环写出的九九乘法表(包括函数的调用) #方向一 for i in range(1,10):    for j in range(1,i+1):        d = i * j        ...

  9. 用for; while...do; do...while; 写出九九乘法表

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. Git 标签使用详解

    列出标签 # 默认按字母排序显示 $ git tag # 模糊匹配查找标签 $ git tag -l "v1.8.5*" 创建标签 # 创建附注标签 $ git tag -a v1 ...

  2. Linux 使用 scp 命令远程拷贝文件和目录

    使用方法: $ scp --help scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o s ...

  3. 深度分析 [go的HttpClient读取Body超时]

    故障现场 本人负责的主备集群,发出的 HttpClient 请求有 30%概率超时, 报context deadline exceeded (Client.Timeout or context can ...

  4. Solon 开发,五、切面与环绕拦截

    Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...

  5. 使用 SourceGenerator 简化 Options 绑定

    目录 摘要 Options 绑定 使用 SourceGenerator 简化 如何 Debug SourceGenerator 如何 Format 生成的代码 使用方法 SourceCode & ...

  6. nRF24L01无线模块笔记

    nRF24L01模块 官网链接: https://www.nordicsemi.com/Products/nRF24-series 常见的无线收发模块, 工作在2.4GHz频段, 适合近距离遥控和数据 ...

  7. csapp lab2 拆炸弹

    1. 实验内容 包含一个二进制应用bomb,需要根据该应用猜测程序的运行过程.程序主体包含了六个函数phase_1到phase_6,每个函数会根据用户的输入做出反应,当输入符合要求时,会炸弹拆解成功, ...

  8. 白话linux操作系统原理

    虽然计算机相关专业,操作系统和计算机组成原理是必修课.但是大学时和真正从事相关专业工作之后,对于知识的认知自然会发生变化.还很有可能,一辈子呆在学校的老师们只是照本宣科,自己的理解也不深.所以今天我站 ...

  9. 使用 ES Module 的正确姿势

    前面我们在深入理解 ES Module 中详细介绍过 ES Module 的工作原理.目前,ES Module 已经在逐步得到各大浏览器厂商以及 NodeJS 的原生支持.像 vite 等新一代的构建 ...

  10. golang中浮点型底层存储原理和decimal使用方法

    var price float32 = 39.29 float64和float32类似,只是用于表示各部分的位数不同而已,其中:sign=1位,exponent=11位,fraction=52位,也就 ...