shell脚本输菱形与等边三角形

【前言】

练习shell,提高逻辑能力。

【脚本】

三角形与菱形均通过几个for循环实现,当然也可以用while。

下面是脚本内容:

[三角形]

#!/bin/bash
read -p "please input the longs:" long
for((i=1;i<=$long;i++))
do
    for((j=$long;j>i;j--)) #控制空格输出
    do
        echo -n " "
    done
    for m in `seq 1 $i`  #输出所在行数相同的数字个数,如在第三行,就输出3个3
    do
        echo -n "$i"     
    done
    #for((n=1;n<i;n++))
    for n in `seq 2 $i`  #输出所在行数减一的数字个数,如在第三行,就输出2个三
    do                   ##这连个for循环可以整合到一块,实现每行输出(2*所在行数-1)个数字 
        echo -n "$i"
    done
    echo ""
done

执行后的效果图:

若将上述脚本内层的两个for循环内"echo -n "$i""的$i换为*后,再次执行脚本效果如下:

[菱形]

#!/bin/bash
read -p "please input the longs:" long
for((i=1;i<=$long;i++))              #图形上半部分
do
    for((j=$long;j>i;j--))
    do
        echo -n " "
    done
    for m in `seq 1 $i`
    do
        echo -n "*"
    done
    #for((n=1;n<i;n++))
    for n in `seq 2 $i`
    do
        echo -n "*"
    done
    echo ""
done

for((i=2;i<=$long;i++))    #图形下半部分
do
    for ((j=1;j<i;j++))
    do
        echo -n " "
    done

    let k=$long+1-$i    

    for m in `seq 1 $k`
    do
        echo -n "*"
    done
    for ((n=1;n<k;n++))
    #for n in `seq 2 $k`
    do
        echo -n "*"
    done
    echo ""
done

改进后:

#!/bin/bash
read -p "please input the longs:" long
for((i=1;i<=$long;i++))       #控制行数
do
    for((j=$long;j>i;j--))    #控制空格输出
    do
        echo -n " "
    done
    
    let "g=2*i-1"

    for m in `seq 1 $g`       #控制*数量
    do
        echo -n "*"
    done

    echo ""
done

for((i=2;i<=$long;i++))       #控制行数
do
    for ((j=1;j<i;j++))       #控制空格输出
    do
        echo -n " "
    done

    let "k=2*(long-i)+1"

    for m in `seq 1 $k`       #控制*数量
    do
        echo -n "*"
    done

    echo ""
done

执行后的效果图:

时间: 2024-11-03 20:46:25

shell脚本输菱形与等边三角形的相关文章

shell脚本打印平行四边形、菱形

shell脚本打印平行四边形 #!/bin/bash for ((i=1;i<=9;i++)) do for ((j=9;j>=i;j--)) do echo -n " " done for ((j=2;j<=i;j++)) do echo -n "*" done for ((j=1;j<=i;j++)) do echo -n "*" done for ((j=9;j>=i;j--)) do echo -n &quo

Shell脚本操作实例——绘制菱形

使用Shell脚本完成菱形图形的绘制 PS:该菱形横向最大最好不要超过45 #! /bin/bash read -p "请输入菱形大小:" g for ((i=1;i<=$g;i++)) do for ((j=$g;j>$i;j--)) do echo -n " " done for ((p=1;p<=$i;p++)) do echo -n "* " done echo "" done for ((k=$g-

shell脚本编程设计——根据输入的数输出菱形、三角形或者数字金字塔(带闪烁颜色)

shell脚本编程设计--根据输入的数输出菱形.三角形或者数字金字塔(带闪烁颜色) shell脚本程序和解释如下 #!/bin/bash #创建死循环,当输入出错或者输入"quit"字符串退出脚本程序 while true do #等待用户输入 read -p "请输入一个不大于20的正整数(输入"quit"则退出):" n #先判断字符串是否是quit if [ "$n" == "quit" ] then

shell脚本交互:expect学习笔记及实例详解

最近项目需求,需要写一些shell脚本交互,管道不够用时,expect可以很好的实现脚本之间交互,搜索资料,发现网上好多文章都是转载的,觉得这篇文章还不错,所以简单修改之后拿过来和大家分享一下~ 1. expect是spawn: 后面加上需要执行的shell命令,比如说spawn sudo touch testfile 1.3 expect: 只有spawn执行的命令结果才会被expect捕捉到,因为spawn会启动一个进程,只有这个进程的相关信息才会被捕捉到,主要包括:标准输入的提示信息,Li

Shell脚本编程基础

什么是Shell 操作系统最外层的程序,shell通过提示符让用户输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出来,管理用户与操作系统之间的交互. Shell是一个用户跟操作系统之间的一个命令解释器.Shell是用户与Linux操作系统之间沟通的桥梁.用户可以输入命令执行,又可以利用 Shell脚本编程去运行. 为什么要用到shell shell是一个交互式程序,当用户输入一条命令,shell就解释一条,一次只处理一条命令.如果我们一些复杂操作,逐个敲命令工作量就会增大,因此,我

shell脚本编程常识

(这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用) 七种文件类型 d            目录                                                       l             符号链接 s             套接字文件                                           b            块设备文件 c            字符设备文件              

shell脚本入门-符号篇

一.shell简介 shell的作用是解释执行用户的命令,用户输入一条命令,shell就执行一条,这种方式称为交互式,shell还有一种执行命令的方式是批处理,用户事先写一个shell脚本,让shell一次把所有命令一次执行完. 二.shell执行脚本 shell脚本用#表示注释,但在第一行时例外,这个时候表示该脚本使用后面指定的解释器/bin/sh解释执行.shell脚本运行原理: 交互Shell(bash)fork/exec一个子Shell(sh)用于执行脚本,父进程bash等待子进程sh终

shell脚本学习指南

以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bash shell 脚本的第一行,#!之后应该是什么? 如果拿这个问题去问别人,不同的人的回答可能各不相同.我见过/usr/bin/env bash,也见过/bin/bash,还有/usr/bin/bash,还有/bin/sh,还有/usr/bin/env sh.这算是编程界的“’茴’字四种写法”了. 在多数情况下,以上五种写法都是等价的.但是,写过程序的人都知道:“少数情况”里往往隐藏

老李分享:《Linux Shell脚本攻略》 要点(四)

老李分享:<Linux Shell脚本攻略> 要点(四) 1.IP地址的正则表达式: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 2.grep用法 //在多级目录中对文本进行递归检索 [[email protected] program_test]# grep "yang" ./ -Rn ./test.txt:6:laoyang./right.txt:1:1 yang man //忽略大小写匹配 [[email protec