用shell命令绘制三角形
本文旨在通过几个经典的图案来练习shell编程,涉及知识点:for循环,大小比较,基本的数学公式计算,echo小技巧。update:2019-10-17 10:13:54
初次绘制
$ for ((l=1;l<=10;l++)); do for ((w=1;w<=l;w++)); do echo -n "*"; done;echo ; done
*
**
***
****
*****
******
*******
********
*********
$ for ((l=1;l<=10;l++)); do for ((w=1;w<=10-l+1;w++)); do echo -n "*"; done;echo ; done
**********
*********
********
*******
******
*****
****
***
**
*
接下来,考虑对“看不见的部分”进行输出。
$ for ((l=1;l<=10;l++)); do for ((w=10;w>=1;w--)); do if [ $w -gt $l ]; then echo -n " ";else echo -n "*"; fi; done;echo ; done
*
**
***
****
*****
******
*******
********
*********
**********
$ for ((l=1;l<=10;l++)); do for ((w=1;w<=10;w++)); do if [ $w -lt $l ]; then echo -n " ";else echo -n "*"; fi; done;echo ; done
**********
*********
********
*******
******
*****
****
***
**
*
数学知识
上面代码很乱很蹩脚是么?其实,数学知识,y/x那条线的斜率为正负1,y<x,或者y>x,两侧要么是*,要么是空。可以把屏幕看成是右转90°的笛卡尔坐标系进行操作。

举个例子
$for ((x=1;x<=6;x++));do for ((y=1;y<=6;y++));do if [ $y -gt $x ]; then echo -n "*";else echo -n " ";fi;done;echo ;done
*****
****
***
**
*
统一化
x1:6
y1:6
循环的任务是铺满屏幕,6x6.
用谁铺满,if来控制。
if y gt 6-x
数学计算问题…
公式加减法,赋值,类型转换
数学计算:
法1.expr 命令后面跟数学公式,但*等特殊符号需转义
法2.在把公式放到$[ ]的括号里面去。内部可以无视空格。
注意:bash shell数学运算符只支持整数运算。z shell(zsh)提供了完整的浮点数算术操作。如果需要在shell脚本中进行浮点数运算,可以考虑看看z shell。
以对角线斜率为-1时举例: 关键在于控制y=6-x+1这个等式两侧,y≥6-x+1表示为$y -ge \([6-\)x+1]
$ for ((x=1;x<=6;x++));do for ((y=1;y<=6;y++));do if [ $y -ge $[6-$x+1] ];then echo -n "*";else echo -n " ";fi;done;echo "";done
*
**
***
****
*****
******
Todo:
- if 后面,逻辑或运算,绘制空心等边三角形,并旋转不同角度
- awk中高级函数用法。对三角函数的支持实现r=a(1-sinθ)。
用shell命令绘制三角形的更多相关文章
- Linux OpenGL 实践篇-3 绘制三角形
本次实践是绘制两个三角形,重点理解顶点数组对象和OpenGL缓存的使用. 顶点数组对象 顶点数组对象负责管理一组顶点属性,顶点属性包括位置.法线.纹理坐标等. OpenGL缓存 OpenGL缓存实质上 ...
- 自定义shell命令--闪烁的字母(PIL实现)
之前看到shell命令行,有人写过漫天下字母的cmatrix,想自己动手用python写一个类似,但是比较有自己风格的shell屏保 大致效果如下: 制作这个的大体思路比较简单: 1.利用python ...
- 从0开发3D引擎(九):实现最小的3D程序-“绘制三角形”
目录 上一篇博文 运行测试截图 需求分析 目标 特性 头脑风暴 确定需求 总体设计 具体实现 新建Engine3D项目 实现上下文 实现_init 实现"获得WebGL上下文" 实 ...
- 2.通过QOpenGLWidget绘制三角形
参考:1.opengl绘制三角形 1.QOpenGLWidget的早先版本 QGLWidget是遗留Qt OpenGL模块的一部分,和其他QGL类一样,应该在新的应用程序中避免使用.相反,从Qt 5. ...
- Hadoop Shell命令大全
hadoop支持命令行操作HDFS文件系统,并且支持shell-like命令与HDFS文件系统交互,对于大多数程序猿/媛来说,shell-like命令行操作都是比较熟悉的,其实这也是Hadoop的极大 ...
- Shell命令和流程控制
Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...
- 在程序中执行shell命令
在linux系统下的操作中我们会经常用到shell命令来进行,一开始学习进程的时候对于shell命令也进行了思考,认为shell命令就是一个进程的外壳,经过了后来的学习对于这一点也有了更多的认识. 用 ...
- Linux远程执行Shell命令或脚本
## 远程执行shell命令 ssh [user]@[server] '[command]' # eg. ssh root@192.168.1.1 'uptime' ## 远程执行本地shell脚本 ...
- HBase基本shell命令
HBase基本shell命令 以下shell命令都是经过测试,正常展示,若有不足,还望指点! 1.创建表 create ‘表名称’,‘列族名称1’,‘列族名称1’create 'test_M_01', ...
- Linux SHELL 命令入门题目答案(一)
1.如何使用shell 打印 “Hello World!” (1)如果你希望打印 !,那就不要将其放入双引号中,或者你可以通过转义字符转义(2)echo 'hello world!' 使用单引号ech ...
随机推荐
- CANoe_系统变量的创建过程
在Canoe中创建系统变量,可以用于定义和管理与CAN网络通信相关的参数和配置.遵循以下步骤: 1.打开Canoe 启动Canoe软件. 2.打开项目 在Canoe的菜单栏中,选择"File ...
- vscode使用chatGPT
vscode使用chatGPT 一.下载chatPGT 在拓展中找到chatGPT,我这里下载的是中文版 二.使用 1.使用快捷键 ctrl+shift+p进行查找 chatGPT 2.点击请输入问题 ...
- 沉思篇-剖析Jetpack的LiveData
上一篇我们讲到了架构组件中的Lifecycle,由于缺少具体的运用,可能缺少直观的感受,今天我们就用Lifecycle实战一回,看看Lifecycle是怎样运用到LiveData中的. LiveDat ...
- macOS 系统 Kafka 快速入门
Kafka 的核心功能是高性能的消息发送与高性能的消息消费.以下是 Kafka 的快速入门教程. 下载并解压缩 Kafka 二进制代码压缩文件 打开 Kafka 官网的下载地址,可以看到不同版本的 K ...
- 【笔试实战】LeetCode题单刷题-编程基础 0 到 1【三】
682. 棒球比赛 题目链接 682. 棒球比赛 题目描述 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分. 比赛开始时,记录是空白的.你 ...
- Codeforces Round #880 (Div. 2) A-D
A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; int cnt[107]; bool so ...
- 【小小demo】SpringBoot+Layui登录
easy-login 基于layui 注册.登录简单实现,并他通过拦截器拦截未登录请求. 项目地址文章末尾 登录拦截器 SystemInterceptor preHandle在 Controller ...
- YOLOX目标检测实战:LabVIEW+YOLOX ONNX模型实现推理检测(含源码)
目录 前言 一.什么是YOLOX 二.环境搭建 1.部署本项目时所用环境: 2.LabVIEW工具包下载及安装: 三.模型的获取与转化[推荐方式一] 1.方式一:直接在官网下载yolox的onnx模型 ...
- 2023年陕西彬州第八届半程马拉松赛153pb完赛
1.赛事背景 2023年6月3日,我参加了2023陕西彬州第八届半程马拉松赛,最终153完赛,PB了5分钟.起跑时间早上7点30分,毕竟6月天气也开始热了.天气预报显示当天还是小到中雨,上次铜川宜君半 ...
- 用 Vue.js 实现一个 JSON Viewer
演示地址: http://json.imlht.com/vue-json-viewer-demo.html 常用的 JSON 格式化工具 JSON 是一种轻量级的数据交换格式, 相信大家用得比较多, ...