shell编程之双重循环(教你花式打印各种图形)(下)

简介: 1、双重循环概述双重循环需要具备的前提——存在两个以上的自变量。执行机制:

图形7:倒等腰三角形

方法一:

先输出一个空格直角三角形,再输出一个星星填充的反直角三角形,最后输出一个星星填充的倒直角三角形。

#!/bin/bash
 #倒等腰三角形
 #先输出一个空格直角三角形
 #再输出一个星星填充的反直角三角形
 #最后输出一个星星填充的倒直角三角形
 for a in {1..9}
 do
 #输出一个空格填充的直角三角形
    for b in `seq 1 $a`
    do
       echo -n " "
    done
 #再输出一个星星填充的反直角三角形
    for c in `seq $a 9`
    do
       echo -n "*"
    done
 #最后输出一个星星填充的倒直角三角形
    for d in `seq $a 8`
    do
       echo -n "*"
    done
 #用于换行,echo默认打印换行符
    echo
 done
[root@yuji ~]# bash hua7.sh
 *****************
  ***************
   *************
    ***********
     *********
      *******
       *****
        ***
         *
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


方法二:

#!/bin/bash
 #倒等腰三角形
 #a从9开始
 #先输出一个空格直角三角形
 #之后每行的星星个数=2a-1
 for a in {9..1}
 do
 #输出一个空格填充的直角三角形
    for ((b=9;b>=a;b--))
    do
       echo -n " "
    done
 #每行的星星个数=2a-1
    i=$[(a*2)-1]
    for j in `seq $i`
    do
       echo -n "*"
    done
 #用于换行,echo默认打印换行符
    echo
 done
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


图形8:菱形(正等腰三角形+倒等腰三角形)

先输出一个正等腰三角形(9行);再输出一个倒等腰三角形(8行)。

#!/bin/bash
 #菱形
 #正等腰三角形+倒等腰三角形
 #正等腰三角形,一共9行
 for a in {1..9}
 do
 #输出一个空格填充的倒直角三角形
    for ((b=9;b>=a;b--))
    do
       echo -n " "
    done
 #每行的星星个数=2a-1
    i=$[(a*2)-1]
    for j in `seq $i`
    do
       echo -n "*"
    done
    echo
 done
 #倒等腰三角形,一共8行
 for a in {8..1}
 do
    for ((b=9;b>=a;b--))
    do
       echo -n " "
    done
 #每行的星星个数=2a-1
    i=$[(a*2)-1]
    for j in `seq $i`
    do
       echo -n "*"
    done
    echo
 done
 [root@yuji ~]# bash hua8.sh
         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************
  ***************
   *************
    ***********
     *********
      *******
       *****
        ***
         *
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


图形9:平行四边形

方法一:

先输出一个空格填充的直角三角形,之后每行输出相同个数的星星。

#!/bin/bash
 #平行四边形
 #先输出一个空格填充的直角三角形
 #之后每行输出相同个数的星星
 for a in {1..9}
 do
 #输出一个空格直角三角形
    for b in `seq 1 $a`
    do
       echo -n " "
    done
 #每行输出9个星星
    for c in {1..9}
    do
       echo -n "*"
    done
    echo
 done
 [root@yuji ~]# bash hua9.sh
 *********
  *********
   *********
    *********
     *********
      *********
       *********
        *********
         *********
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


方法二:

先输出一个空格填充的倒直角三角形,之后每行输出相同个数的星星。

#!/bin/bash
 #平行四边形
 #先输出一个空格填充的直角三角形
 #之后每行输出相同个数的星星
 for a in {1..9}
 do
 #输出一个空格直角三角形
    for b in `seq $a 9`
    do
       echo -n " "
    done
 #每行输出9个星星
    for c in {1..9}
    do
       echo -n "*"
    done
    echo
 done
[root@yuji ~]# bash hua09.sh
         *********
        *********
       *********
      *********
     *********
    *********
   *********
  *********
 *********
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


图形10:直角梯形

将平行四边形左边的空格直角三角形,变成星星直角三角形。

#!/bin/bash
 #直角梯形
 #使用"直角三角形+平行四边形"的方式
 for a in {1..9}
 do
 #输出一个星星填充的直角三角形
    for b in `seq 1 $a`
    do
       echo -n "*"
    done
 #每行输出9个星星
    for c in {1..9}
    do
       echo -n "*"
    done
    echo
 done
[root@yuji ~]# bash hua10.sh
**********
***********
************
*************
**************
***************
****************
*****************
******************
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


图形11:等腰梯形

先输出一个空格填充的倒直角三角形;之后输出每行的星星,每行的星星个数=n+行数×2(n为任意正整数,每一行的星星个数都比上一行多2个)。

#!/bin/bash
 #等腰梯形
 #先输出一个空格填充的倒直角三角形(9行)
 #每行的星星个数=9+行数×2
 for a in {1..9}
 do
 #输出一个空格填充的倒直角三角形
    for ((b=9;b>=a;b--))
    do
       echo -n " "
    done
 #每行输出(9+2a)个星星
    i=$[9+a*2]
    for ((c=1;c<=i;c++))
    do
       echo -n "*"
    done
    echo
 done
 [root@yuji ~]# bash hua11.sh
         ***********
        *************
       ***************
      *****************
     *******************
    *********************
   ***********************
  *************************
 ***************************
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|

相关文章
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
Shell Linux 开发工具
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
308 12
|
Shell
Shell编程(下)
Shell编程(下)
217 1
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
182 1
|
5月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
546 9
|
5月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
536 2
|
8月前
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
329 60
|
11月前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
5月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。