课时93:流程控制_函数进阶_综合练习
1.1.3 综合练习
学习目标
这一节,我们从 案例解读、脚本实践、小结 三个方面来学习。
案例解读
案例需求
使用shell脚本绘制一个杨辉三角

案例解读

1、每行数字左右对称,从1开始变大,然后变小为1。
2、第n行的数字个数为n个,所有数字和为 2^(n-1)。
3、每个数字等于上一行的左右临近两个数字之和。
4、第n行的数字依次为 1、1×(n-1)、1×(n-1)×(n-2)/2、1×(n-1)×(n-2)/2×(n-3)/3 ...
...
脚本实践
脚本实践
查看脚本内容
[root@localhost ~]# cat yanghui_triangle.sh
#!/bin/bash
# 功能:shell定制杨辉三角功能
# 版本:v0.1
# 作者:书记
# 联系:www.superopsmsb.com# 判断输入是否为整数
check_int(){# 设定数据标识flag=trueread -p "请输入一个数据值: " layer_num# 通过在循环内部进行数据操作判断是否是数据while $flag;doexpr $layer_num + 0 > /dev/null 2>&1if [ $? -eq 0 ]thenflag=falseelseread -p "请输入一个数据值: " layer_numfidone
}# 定制一个数组
declare -a num_arraycheck_int
# 定制杨辉三角的行数变量 row
for(( row=1; row<=layer_num; row++ ))
do#打印杨辉三角的左侧空白for k in $(seq $[$layer_num - $row])doecho -n " "done# 定制每行的数据获取for(( col=1; col<=row; col++ ))do# 第n行的第1个和第n行的第n个数字为1if [ $col -eq 1 -o $row -eq $col ]then# 设定每行的两个边界数字为1num_array[$row$col]=1else# 获取上一行的两个临近数据let row_up=row-1 # 获取上一行的数据let col_up=col-1 # 获取上一行的临近数据# 获取当前行的数据值为 上一行临近数据的数据和let num_array[$row$col]=${num_array[$row_up$col_up]}+${num_array[${row_up}${col}]}fidone# 打印每行的数据for(( col=1; col<=row; col++ ))doprintf "%-8s" ${num_array[$row$col]}doneecho
done
脚本执行效果
[root@localhost ]# /bin/bash yanghui_triangle.sh
请输入一个数据值: 811 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1
1 7 21 35 35 21 7 1
函数嵌套改造
脚本改造后内容
[root@localhost ~]# cat yanghui_triangle.sh
#!/bin/bash
# 功能:shell定制杨辉三角功能
# 版本:v0.2
# 作者:书记
# 联系:www.superopsmsb.com# 定制一个数组
declare -a num_array# 判断输入是否为整数
check_int(){# 设定数据标识flag=trueread -p "请输入一个数据值(q退出): " layer_num[ $layer_num == "q" ] && exit# 通过在循环内部进行数据操作判断是否是数据while $flag;doexpr $layer_num + 0 > /dev/null 2>&1if [ $? -eq 0 ]thenflag=falseelseread -p "请输入一个数据值: " layer_numfidone
}# 定制左侧空格打印逻辑
left_blank_func(){# 获取参数值layer_num=$1row=$2# 空格打印逻辑for k in $(seq $[$layer_num - $row])doecho -n " "done
}# 获取每行的数据值
col_num_count(){# 获取参数值row=$1# 数据获取逻辑 for(( col=1; col<=row; col++ ))do# 第n行的第1个和第n行的第n个数字为1if [ $col -eq 1 -o $row -eq $col ]then# 设定每行的两个边界数字为1num_array[$row$col]=1else# 获取上一行的两个临近数据let row_up=row-1 # 获取上一行的数据let col_up=col-1 # 获取上一行的临近数据# 获取当前行的数据值为 上一行临近数据的数据和let num_array[$row$col]=${num_array[$row_up$col_up]}+${num_array[${row_up}${col}]}fidone
}
# 每行数据打印逻辑
col_num_print(){# 获取参数值row=$1# 数据打印逻辑for(( col=1; col<=row; col++ ))doprintf "%-8s" ${num_array[$row$col]}doneecho
}
while true
docheck_int# 定制杨辉三角的行数变量 rawfor(( row=1; row<=layer_num; row++ ))do#打印杨辉三角的左侧空白left_blank_func $layer_num $row# 获取数据的值col_num_count $row# 打印每行的所有数据col_num_print $rowdone
done
[root@localhost ~]# /bin/bash yanghui_triangle.sh
请输入一个数据值(q退出): 511 11 2 11 3 3 1
1 4 6 4 1
请输入一个数据值(q退出): q
[root@localhost ~]#
小结
相关文章:
课时93:流程控制_函数进阶_综合练习
1.1.3 综合练习 学习目标 这一节,我们从 案例解读、脚本实践、小结 三个方面来学习。 案例解读 案例需求 使用shell脚本绘制一个杨辉三角案例解读 1、每行数字左右对称,从1开始变大,然后变小为1。 2、第n行的数字个数为n个…...
oracle创建整个数据库的只读账户
在源用户readonly 下创建只读用户 reader readonly 的表空间为AA 一、创建只读用户 create user reader identified by 密码 default tablespace AA; 二、授权 grant connect to reader ; 三、获取原账号readonly 的查询权限 select grant select on ||owner||.||object…...
文件名乱码危机:数据恢复全攻略
在数字化时代的浪潮中,电脑文件成为我们日常生活和工作中不可或缺的一部分。然而,有时我们会突然遭遇一个令人头疼的问题:原本清晰易读的文件名突然变成了乱码。这些乱码文件名不仅让我们无法准确识别文件内容,更可能意味着数据丢…...
Unity Standalone File Browser,Unity打开文件选择器
Unity Standalone File Browser,Unity打开文件选择器 下载地址:GitHub链接: https://github.com/gkngkc/UnityStandaloneFileBrowser简单的示例代码 using SFB; using System; using System.IO; using UnityEngine; using UnityEngine.UI;…...
面向对象的架构三段式写一篇论文
在面向对象的软件架构中,系统设计通常遵循一种“三段式”方法论,以确保软件的可扩展性、可维护性和灵活性。这种方法论包括三个核心阶段:概念化、详细设计和实现。通过这三个阶段的逐步深入,开发团队可以有效地应对复杂系统的挑战…...
npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED
解决npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to 分析过后这个问题是证书过期的意思 考虑到其他的原因 这里给出三个解决方案 一: 清除npm缓存 npm cache clean --force 取消ssl验证: npm config set strict-…...
pytorch-多分类实战之手写数字识别
目录 1. 网络设计2. 代码实现2.1 网络代码2.2 train 3. 完整代码 1. 网络设计 输入是手写数字图片28x28,输出是10个分类0~9,有两个隐藏层,如下图所示: 2. 代码实现 2.1 网络代码 第一层将784降维到200,第二次使用…...
httpsok-快速申请谷歌SSL免费证书
🔥httpsok-快速申请谷歌SSL免费证书 使用场景: 部署CDN证书、OSS云存储证书证书类型: 单域名 多域名 通配符域名 混合域名证书厂商: ZeroSSL Lets Encrypt Google证书加密类型: ECC、 RSA 一、证书管理 进入 证书管…...
LiveGBS流媒体平台GB/T28181功能-国标级联中如何自定义通道国标编号编辑通道编号保持唯一性
LiveGBS国标级联中如何自定义通道国标编号编辑通道编号保持唯一性 1、国标级联选择通道修改2、通道编辑修改3、分屏展示设备树修改3.1、编辑名称中修改 4、分屏展示分组修改4.1、编辑名称中修改4.2、选择通道中修改 5、搭建GB28181视频直播平台 1、国标级联选择通道修改 国标级…...
mysql 大表凌晨定时删除数据
有几张表数据量非常大,一次维护量有点大(一个月有500多万条数据,并且还在往上涨), 于是想了个定时删除数据,每天凌晨执行,这样每天删除数据量就小, 循环删除,每次删除5…...
ArcGIS和ArcGIS Pro快速加载ArcGIS历史影像World Imagery Wayback
ArcGIS在线历史影像网站 World Imagery Wayback(网址:https://livingatlas.arcgis.com/wayback/)提供了数期历史影像在线浏览服务,之前不少自媒体作者在文中宣称其能代表Google Earth历史影像。 1、一点对比 (1)同一级别下的版本覆盖面 以下述区域为例,自2014年2月20…...
数据仓库的—数据仓库的体系架构
数据仓库通常采用分层的体系架构设计,作为支撑企业决策分析需求的数据基础设施。典型的数据仓库体系架构由以下三个核心层次组成: 源数据层(Source Layer) 这是数据仓库的数据来源,包括组织内部的各种运营系统,如ERP、CRM、SCM等,以及外部数据源如互联网、社交媒体等。这些系…...
【C/C++基础知识】const 关键字
文章目录 Q&A and 前言const 修饰基本变量初始化const 对象仅在文件内有效 const 的引用应用 指针与 constconst 修饰类成员函数参考写在最后 Q&A and 前言 Q:简要说一说 C 中的 const 关键字,含义以及常见的使用位置 A:const 是 C…...
Docker之数据卷和Dockerfile
Docker之数据卷与Dockerfile的详细使用介绍如下: 一、Docker数据卷 数据卷(volume)是Docker中的一个重要概念,它允许你在容器和宿主机或容器之间共享文件系统。数据卷提供了持久性存储,即使在容器被删除后࿰…...
pull拉取最新代码
工作区、暂存区、版本库 工作区:就是你在电脑里能看到的目录。 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。 …...
工控 modbusTCP 报文
Tx 发送报文:00 C9 00 00 00 06 01 03 00 00 00 02 Rx 接收报文:00 C9 00 00 00 07 01 03 04 01 4D 00 01 Tx 发送报文:00 C9 00 00 00 06 01 03 00 00 00 02 00 C9 事务处理标识符 2字节 00 00 协议标识符 2字节 固定 00 00 00 06 长度 2字节 表示之后的字节总数 (…...
在Ubuntu服务器上快速安装一个redis并提供远程服务
一、快速安装一个Redis 第一步:更新apt源 sudo apt update第二步:下载Redis sudo apt install redis第三步:查看Redis是否已自启动 systemctl status redis二、配置Redis提供远程服务 第一步:先确保6379端口正常开放 如果是…...
玩机进阶教程------手机定制机 定制系统 解除系统安装软件限制的一些步骤解析
定制机 在于各工作室与商家合作定制rom中有一些定制机。限制用户私自安装第三方软件。或者限制解锁 。无法如正常机登陆账号等等。定制机一般用于固定行业或者一些部门。专机专用。例如很多巴枪扫描机型等等。或者一些小牌机型。对于没有官方包的机型首先要导出各个分区来制作…...
Bilstm双向长短期神经网络多输入单输出回归分析
目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 BILSTM神经网络 Bilstm双向长短期神经网络多输入单输出回归分析 完整代码: Bilstm双向长短期神经网络多输入单输出回归分析.zip资源-CSDN文库 https://download.csdn.net/download/abc991835105/89087121 效果图 结果分析 展望 …...
ELK+Filebeat日志分析系统
一、ELK基本介绍: 1.ELK 简介: ELK平台是一套完整的日志集中处理解决方案(日志系统)。 将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 ELK --> ELFK --> ELFKMQ2.ELK组件介绍…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)
Name:3ddown Serial:FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名:Axure 序列号:8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...
Linux基础开发工具——vim工具
文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...
