用shell脚本打等腰三角新

   *

  ***

 *****

*******

  预览图形 发现图形由三个变量组成 行数n 每行的空格数a 和每行的符号数b

关系是    a=n-当前行数    b=2xn-1   并且空格都在符号前

根据关系编写脚本

#!/bin/bash

read -p "input the line numb:" numb

for n in `seq $numb` ;do

        for a in `seq $[$numb-$n]` ;do

        echo -n ' '

        done

        for b in `seq $[${n}*2-1]` ;do

        echo -n '*'

        done

echo

done

  脚本一共涉及了4个变量 3个循环 变量numb为总行数 用变量numb定义n n为循环的次数即打印出的行数 变量a为每行空格的数量用numb-n定义 变量b为每行符号数用nx2-1定义

  脚本运行过程是打印第一行时 先打印空格再打印符号 再执行第二行 打印空格符号…..

  echo -n 为打印不换行 最后一个echo 作用为换行

  也可用其他循环表示

#!/bin/bash

read -p "input the line numb:" numb

n=1

while [ $n -le $numb ] ;do

        a=1

        while [[ $a -le $[$numb-$n] ]] ;do

        echo -n ' '

        let a++

        done

        b=1

        while [[ $b -le $[${n}*2-1] ]] ;do

        echo -n '*'

        let b++

        done

let  n++

echo

done

  while循环注意定义开始循环和结束条件 until与while相比 就是while改成until 循环条件取反即可

#!/bin/bash

read -p "input the line numb:" numb

n=1

until  [ ! $n -le $numb ] ;do

        a=1

        until [ ! $a -le $[$numb-$n] ] ;do

        echo -n ' '

        let a++

        done

        b=1

        until [ ! $b -le $[${n}*2-1] ] ;do

        echo -n '*'

        let b++

        done

let  n++

echo

done

  for的另外一种格式

#!/bin/bash

read -p "input the line numb:" numb

for((n=1 ;n <= $numb;n++));do

        for((a=1;a <= $[$numb-$n];a++));do

        echo -n '#'

        done

        for((b=1;b <= $[${n}*2-1];b++));do

        echo -n '*'

        done

echo 

done

  打印出空心的等腰三角形

    *

   * *

  *   *

 *     *

*********

#!/bin/bash

read -p "input the line numb:" numb

for n in `seq $numb` ;do

if [ $n = 1 -o $n = $numb ] ;then

        for a in `seq $[$numb-$n]` ;do

        echo -n ' '

        done

        for b in `seq $[${n}*2-1]` ;do

        echo -n '*'

        done

else

        for a in `seq $[$numb-$n]` ;do

        echo -n ' '

        done

        echo -n '*'

        for b in `seq $[${n}*2-3]` ;do

        echo -n ' '

        done

        echo -n '*'

fi

echo

done

原创文章,作者:锟,如若转载,请注明出处:http://www.178linux.com/38756

(0)
锟
上一篇 2016-08-22
下一篇 2016-08-22

相关推荐

  • 学习宣言

    此刻打盹,你将做梦,此刻学习,你将圆梦! 为了财富自由,前进!

    Linux干货 2016-12-28
  • Linux LVM介绍及管理

    什么是LVM? LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,用来提高磁盘分区管理的灵活性。系统管理员可以通过LVM轻松的管理磁盘分区,如:将若干个磁盘分区或物理磁盘连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以…

    Linux干货 2016-08-30
  • linux 哲学思想

    一切皆文件:普通文件,目录、字符设备、块设备、套接字在linux中都是以文件被对待;虽然类型不通,但是对其提供得却都是统一套操作界面。 由众多的单一程序,一个程序只实现一个功能,多个程序组合完成负责任务。单一的程序可以保持高效的执行效率,对于复杂的功能linux通过许多简单程序组合等方式实现,在保证简单程序的高效性同时,复杂的程序也必然是高效性的。 文本文件…

    Linux干货 2017-08-19
  • crm命令行命令详解

    crm -status 显示当前集群状态 -configure 配置集群 a.show xml 显示当前集群配置信息(xml格式) b.property 显示集群可用的全局属性(键入之后按两下Tab) -verifiy 校验 -commit 提交 -node a.online 设置当前节点上线 b.show 显示当前节点状态 c.standby 将当前节点设…

    Linux干货 2017-11-04
  • Linux软件包管理及相关命令

    rpm命令,yum命令

    2018-03-12
  • Linux发展史

    前言     Linux属于类Unix中的一个当下比较流行的操作系统,占领了服务器大部分江山。作为一个专业复杂的操作系统,了解其发展过程是很有必要的。如果要讲linux的历史,肯定是从三个团体开发Multics系统说起,贝尔实验室离开Multics项目后,Tompson和他的同事一起创造了unix,而在unix的各种分支中BSD则是迅速发…

    Linux干货 2016-10-14