课时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组件介绍…...
Golang错误处理实战:defer、panic和recover的正确打开方式(附避坑指南)
Golang错误处理实战:defer、panic和recover的正确打开方式(附避坑指南) 在Golang的世界里,错误处理是一门艺术。与传统的try-catch机制不同,Go采用了独特的defer-panic-recover组合拳。这种设计哲学体现了Go语言"…...
PyTorch 2.8镜像效果展示:使用OpenCV对VideoLDM输出做运动模糊增强处理
PyTorch 2.8镜像效果展示:使用OpenCV对VideoLDM输出做运动模糊增强处理 1. 效果展示概览 在视频生成领域,运动模糊效果是提升视频真实感的关键因素之一。本文将展示如何利用PyTorch 2.8镜像环境,结合OpenCV对VideoLDM生成的原始视频进行运动…...
资源占用优化:OpenClaw在RTX4090D上并发控制策略
资源占用优化:OpenClaw在RTX4090D上并发控制策略 1. 为什么需要关注OpenClaw的资源占用? 去年冬天,当我第一次在RTX4090D上部署OpenClaw对接Qwen3-32B模型时,系统频繁崩溃的场景至今记忆犹新。原本以为24GB显存足以应对常规任务…...
终极DBeaver多线程查询优先级控制:基于查询类型的动态调整指南
终极DBeaver多线程查询优先级控制:基于查询类型的动态调整指南 【免费下载链接】dbeaver DBeaver 是一个通用的数据库管理工具,支持跨平台使用。* 支持多种数据库类型,如 MySQL、PostgreSQL、MongoDB 等;提供 SQL 编辑、查询、调试…...
DeOldify开源贡献指南:如何参与项目改进与代码提交
DeOldify开源贡献指南:如何参与项目改进与代码提交 想为DeOldify这个酷炫的图片上色项目添砖加瓦,但又觉得开源贡献这事儿门槛太高,不知道从何下手?别担心,你绝对不是一个人。很多人对开源既向往又畏惧,总…...
StructBERT-Large中文相似度工具一文详解:三级匹配等级判定逻辑与业务适配建议
StructBERT-Large中文相似度工具一文详解:三级匹配等级判定逻辑与业务适配建议 本文深度解析StructBERT-Large中文相似度工具的核心匹配逻辑,提供实际业务场景中的适配建议和优化方案 1. 工具核心价值与适用场景 StructBERT-Large中文相似度工具是一个基…...
Spatial Audio(空间音频)与多声道环绕声:从5.1到7.1的沉浸式体验升级
1. 从立体声到环绕声:音频技术的进化之路 记得我第一次在朋友家体验5.1声道家庭影院时,那种子弹从耳边呼啸而过的感觉让我彻底震撼了。这完全颠覆了我对"好音质"的认知——原来声音可以如此立体、如此真实。要理解现代的空间音频技术…...
如何5分钟快速安装Ghidra:新手逆向工程终极指南
如何5分钟快速安装Ghidra:新手逆向工程终极指南 【免费下载链接】ghidra_installer Helper scripts to set up OpenJDK 11 and scale Ghidra for 4K on Ubuntu 18.04 / 18.10 项目地址: https://gitcode.com/gh_mirrors/gh/ghidra_installer Ghidra作为美国国…...
SpeedyStepper Forked:嵌入式步进电机硬实时控制库解析
1. SpeedyStepper Forked:面向嵌入式实时控制的高性能步进电机驱动库深度解析1.1 库定位与工程价值SpeedyStepper Forked 是一个专为嵌入式平台(尤其是基于Arduino生态的MCU)设计的轻量级、高精度步进电机运动控制库。其核心目标并非提供图形…...
C#异步编程完全指南:async/await背后的状态机原理
# C#异步编程完全指南:async/await背后的状态机原理## 引言在现代软件开发中,异步编程已成为构建高响应、高吞吐量应用程序的基石。C# 作为一门不断演进的现代编程语言,从 .NET Framework 4.5 开始引入了 async 和 await 关键字,彻…...
