学过C语言的同学,是否还记得当年各种打印各种星星。今天,我就改一版使用Shell脚本输出各种星星。打印单个星号

这个没啥可说的,直接上代码:# cat star.sh

#!/bin/bash

echo "*"

# ./star.sh

*

#

执行后的结果表明,Linux的echo命令打印“*”后会自动换行。无论你在一行中输入几个星号,执行到最后一个星号都会自动换行。打印多行星号

如果想同时在多行中打印星星,例如:每行打印一个打印三行。很明显,实现这个需要重复执行相同的操作来完成,使用循环结构就可以很轻松的解决该问题。

在Shell 中,循环结构可以使用for、while、和until 等语句来实现。还可以使用continue和break 等语句来在适当的时机跳过或者退出循环体中的某些语句。for循环是最简单,也是最常用的循环语句。本例中我们使用for循环来实现。

我们多数使用for循环时候,经常使用“带列表的for循环语句”和“类C语言风格的for循环”,首先,介绍下带列表的for循环语句的语法:for  variable in {list}

do

command1

command2

...

done

在上面的语法中,variable 称为循环变量,list 是一个列表,可以是一系列的数字或者字符串,元素之间使用空格隔开。do 和done 之间的所有的语句称为循环体,即循环结构中重复执行的语句。for 循环体的执行次数与list 中元素的个数有关。

带列表的for 语句执行时,Shell 会将in 关键字后面的list 列表的第1 个元素的值赋给变量variable,然后执行循环体;当循环体中的语句执行完毕之后,Shell 会将列表中的下1个元素的值赋给变量variable,然后再次执行循环体。当list 列表中的所有的元素都被访问后,for 循环结构终止,程序将继续执行done语句后面的其他语句。

对于LIST的用法,常用的有以下几种:

·直接写:例如:1 2 3

·大括号:例如:{1..3}

·字符串:例如:a b c

·文件名  例如:/etc/*.conf

·命令执行结果:例如:$(find /etc -name "*.conf")

·使用脚本的位置参数:例如:$N和$*

类C语言风格的for循环的语法:for  ((expression1; expression2; expression3));do

command1

command2

...

done

在上面的语法中,for循环语句的条件被两个小括号包起来。执行条件分为3部分,由两个分号隔开,第一部分expression1通常是条件变量的初始化语句,第二部分expression2是决定是否执行for循环的条件。当expression2的值为0时,执行整个循环体,当expression2的值为非0时,退出for循环体。第三部分expression3通常用来改变条件变量的值,例如递增或递减等。

对于(()) 的用法,例如以下几种:

·((i=1;i<=5;i++ )) :递增1

·(( i=5;i>=1;i--)) :递减1

·(( i=1;i<=7;i=i+2)):递增2

·((i=$i;i<=$(($i-1));i++)) :数学运算

在我们大致了解了for循环的语法后,我们实现“每行打印一个打印三行”:*

*

*

代码如下:#!/bin/bash

for (( i=1;i<4;i++ ));do

echo "*"

done

#

上述代码中,我们主要使用for循环控制了要打印星号的行数。打印矩形:5行5列

打印5行5列如下所示:*****

*****

*****

*****

*****

实现思路:

主要是使用for循环嵌套,一个for用来定义一行打印for的个数,另一个for定义打印的行数。其中echo的-n参数,主要是为了改变echo默认输入完毕后自动换行,也就是不要在最后自动换行。这样是为了实现连续打印星号。

代码如下:# cat star.sh

#!/bin/bash

for (( i=1;i<=5;i++ ));do

for (( star=1;star<=5;star++ ));do

echo -n "*"

done

echo

done

#打印正三角形

打印正三角形如下所示:*

**

***

****

*****

实现思路:

还是for循环嵌套,一个for用来定义打印的行数,另一个for循环定义每行要打印信号的个数,并且是递增的方式。# cat ./star.sh

#!/bin/bash

height=$1

for ((i=1;i<=$height;i++))

do

for ((star=1;star<=$i;star++))

do

echo -n  "*"

done

echo ""

done

#打印倒三角形

打印倒三角形如下所示:*****

****

***

**

*

实现思路:

还是for循环嵌套,一个for用来定义打印的行数,另一个for循环定义每行要打印信号的个数,并且是递减的方式。

代码如下:# cat star.sh

#!/bin/bash

height=$1

for ((i=$height;i>=1;i--))

do

for ((star=1;star<=$i;star++))

do

echo -n  "*"

done

echo ""

done

#打印不一样的三角形

(1)*

**

***

****

*****

代码如下:# cat star.sh

#!/bin/bash

height=$1

for ((i=1;i<=$height;i++))

do

for ((blank=$i;blank<=$(($height-1));blank++))

do

echo -n " "

done

for ((star=1;star<=$i;star++))

do

echo -n  "*"

done

echo ""

done

#

(2)*

***

*****

*******

*********

代码如下:# cat star.sh

#!/bin/bash

height=$1

for ((i=1;i<=$height;i++))

do

for ((blank=1;blank<=$(($height-$i));blank++))

do

echo -n " "

done

for ((star=1;star<=$(($i*2-1));star++))

do

echo -n  "*"

done

echo ""

done

#

(3)*********

*******

*****

***

*

代码如下:# cat star.sh

#!/bin/bash

height=$1

for ((i=$height;i>=1;i--))

do

for ((blank=1;blank<=$(($height-$i));blank++))

do

echo -n " "

done

for ((star=1;star<=$(($i*2-1));star++))

do

echo -n  "*"

done

echo ""

done

#

打印平行四边形

打印平行四边形如下所示:*****

*****

*****

*****

*****

代码如下:# cat star.sh

#!/bin/bash

height=$1

for (( i=$height;i>=1;i-- ));do

for (( blank=1;blank<=$i;blank++ ));do

echo -n " "

done

for (( star=1;star<=$height;star++ ));do

echo -n "*"

done

echo

done

#打印菱形

打印菱形如下所示:*

***

*****

*******

*********

*******

*****

***

*

代码如下:# cat star.sh

#!/bin/bash

height=$1

for ((i=1;i<=$height;i++))

do

for ((blank=1;blank<=$(($height-$i));blank++))

do

echo -n " "

done

for ((star=1;star<=$(($i*2-1));star++))

do

echo -n  "*"

done

echo ""

done

for ((i=$(($height-1));i>=1;i--))

do

for ((blank=1;blank<=$(($height-$i));blank++))

do

echo -n " "

done

for ((star=1;star<=$(($i*2-1));star++))

do

echo -n  "*"

done

echo ""

done

#

总结:只要你认真寻找其中的规律,利用其规律可以简化代码的行数,利用循环可以轻松的完成你想输出的形状。本文中有部分简单的介绍了代码的含义,建议初学者阅读以上代码范例,明白其实现的原理。

欢迎使用微信关注“云运维联盟”公众号,第一时间了解本博客动态!

c语言用星号循环打出爱心,学过C语言的同学,是否还记得当年各种打印各种星星。今天,我就改一版使用Shell脚本输出各种星星。打印单个星号         这个没啥可说的,直接上代码:#...相关推荐

  1. C语言 通过for循环绘制爱心

    #include <stdio.h> #include <windows.h> void sw() {int i;system("color 0c"); f ...

  2. c语言程序设计 大学考试题库,广东工业大学《C语言程序设计》考试复习重点题库.pdf...

    广东工业大学<C语言程序设计>考试复习重点题库.pdf 考试复习重点资料(最新版)考试复习重点资料(最新版) 封封 面面 第1页 资料见第二页资料见第二页 复习题 [程序 1] 题目有 1 ...

  3. 如何在Shell脚本中漂亮地打印JSON?

    是否有(Unix)Shell脚本以易于理解的格式格式化JSON? 基本上,我希望它可以转换以下内容: { "foo": "lorem", "bar&q ...

  4. shell脚本如何优雅的打印帮助信息

    一个好的帮助信息对于快速.高效的使用shell脚本是非常有好处的.我们一般通过echo来逐行打印帮助信息,这种方式一个明显的缺点就是需要手动去进行排版,而排版的过程有时十分的繁琐.有没有想过,如果可以 ...

  5. java用for循环打印心形_怎么用for循环打出爱心

    先上效果图: 这是用*组成的爱心,下面讲讲思路: 首先这个图形可以拆分成三部分:第一部分是上面三行的两个梯形,第二部分是中间三行的长方形,第三部分是最下面的倒三角形. 其实图形拆分好之后,一步步实现就 ...

  6. mysql爱心怎么打,怎么用for循环打出爱心

    先上效果图: 这是用*组成的爱心,下面讲讲思路: 首先这个图形可以拆分成三部分:第一部分是上面三行的两个梯形,第二部分是中间三行的长方形,第三部分是最下面的倒三角形. 其实图形拆分好之后,一步步实现就 ...

  7. c语言程序设计华北电力大学,华北电力大学-《C语言程序设计》复习资料.pdf

    总体上必须清楚的: 1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch) 2)用C语言编写的程序称为C语言源程序,源程序文件的后缀名为".c&q ...

  8. 软件工程c语言程序设计考研,2016年浙江工商大学软件工程C语言程序设计考研复试题库...

    一.选择题 1. 有以下程序 : 程序的运行情况是( ). A. 形成无限循环 B. 输出6 C. 输出5 D. 输出4 答:A [解析]本题执行过程为:i=l,k=0, i<6成立,执行for ...

  9. c语言二重循环的盒图怎么画,全国计算机二级C语言程序设计讲义 循环嵌套.ppt...

    全国计算机二级C语言程序设计讲义 循环嵌套 第7讲 循环的嵌套 一.continue 语句和 break 语句 1.continue语句 2.break语句 二.循环的嵌套 三.goto语句 葛挑破隶 ...

最新文章

  1. 北京智源大会 | 启元AI战胜中国星际冠军,智能体激发人类探索未知
  2. redis的主从复制,读写分离,主从切换
  3. lnmp基于fastcgi实现nginx_php_mysql的分离_LNMP基于FastCGI实现Nginx,PHP,MySQL的架构分离...
  4. 2018年云栖社区展望(建设性意见非BUG)
  5. 2016陕西省ACM 热身体B 种类并查集
  6. [Docker]Docker拉取,上传镜像到Harbor仓库
  7. php 邮件发送是html 没样式_使用python发送邮件
  8. 令xtu3service开机时立即启动_Mac开机时可以使用的快捷键 苹果电脑快捷键使用介绍...
  9. 中文论文万能句型_收藏 | SCI 论文写作的万能句型(二)
  10. 批处理添加桌面快捷方式
  11. 关于手眼标定的误差计算
  12. 明解C语言(基础篇)—第七章
  13. 一张图告诉你,自学编程和科班程序员的差别在哪!网友:很真实
  14. 苹果手机桌面找不到计算机,苹果手机在我的电脑显示不出来怎么办
  15. 工业照明节能减碳难?致远ZWS云平台有妙招
  16. Intent跳转地图应用(百度地图、高德地图)
  17. Cousera Notebook 之 Python 备份记录
  18. PHPWIND7.3.2设置伪静态方法
  19. 错误: 找不到或无法加载主类 com.sxt.ceshi.Demo166
  20. 写一段潮汐调和分析的matlab代码

热门文章

  1. [论文阅读]Capturing Associations in Graphs 阅读笔记
  2. [蓝牙]蓝牙的初步简介与应用 及其技术要点--更新中
  3. 用友u8修改服务器id,用友u8服务器地址修改
  4. 软件产品测试的准入准出标准有哪些?
  5. 分享一些比较好的博客网站
  6. SpringBoot集成阿里EasyExcel导出excel高级实战
  7. IDEA 轻松实现线上debug 调试
  8. 核心竞争力分析模型(转载)
  9. leetcode84- 柱状图中最大的矩形(三种思路:暴力,单调栈+哨兵(详解),分治)
  10. win7计算机不显示摄像头图标不见了,win7摄像头图标不见了,win7如何显示摄像头图标...