shell脚本语句(画矩形、三角形、乘法表和小游戏)(#^.^#)
目录
一、语句
一、条件语句
一、以用户为例演示
一、显示当前登录系统的用户信息
二、显示有多少个用户
二、单分支if
一、输入脚本
二、验证结果
三、双分支if
一、输入脚本
二、验证结果
四、多分支if
一、输入脚本
二、验证
二、循环语句
一、shell版本的循环语句
二、C语言版本
三、举例
三、输出一个矩形
四、在矩形的基础上显示一个三角形
五、输出九九乘法表
六、猜价格(小游戏)
一、脚本配置
二、验证
一、显示结果(第一种)
二、显示结果(第二种)
一、语句
一、条件语句
一、以用户为例演示
一、显示当前登录系统的用户信息
w命令
二、显示有多少个用户
w | wc -l
显示有7个用户
前两个是固定标题,从第三个开始才是登录用户,所以要统计数量需要
命令:echo $[$(w | wc -l) -2]
显示结果
二、单分支if
语法:if condition;then command
一、输入脚本
#!/bin/bash
#test
#mpy
#单分支if
user_num=$[$(w | wc -l) - 2]
if [ $user_num -gt 3 ];then
echo "用户过多登录"
fi
二、验证结果
三、双分支if
语法:if condition;then command;else command
一、输入脚本
#多分支if
if [ $user_num -gt 5 ];then
echo "登录用户过多"
else
echo "登录用户适中"
fi
二、验证结果
四、多分支if
语法:if condition;then command;elif condition;then command;elif
#多分支if 成绩判断
一、输入脚本
#A:90~100;B:80~89;C:70~79;D:0~69
read -p "请输入要查询的成绩: " score
if [ $score -lt 0 -o $score -gt 100 ];then
echo "输入错误,请输入0~100的数字"
$0
else
if [ $score -ge 90 -a $score -le 100 ];then
echo "A"
elif [ $score -ge 80 -a $score -le 89 ];then
echo "B"
elif [ $score -ge 70 -a $score -le 79 ];then
echo "C"
else
echo "D"
fi
fi
在这段脚本中,使用了read命令来获取用户输入的成绩,并存储在变量score中
使用if语句判断输入的成绩是否小于0或大于100,如果是,则打印错误信息并重新运行脚本
90-100的区间是A
80-89 的区间是B
70-79的区间是C
其余的是D
二、验证
二、循环语句
一、shell版本的循环语句
for i in 取值范围;do
command
done
二、C语言版本
for ((i=初始值;condition;i++));do command done
for ((i=初始值;condition;i--));do command done
则是递减1
三、举例
for i in {1..10};do
echo $i
done
可以在里面嵌入if语句,满足条件时数数,不满足则不数数
for i in {1..10};do
if [ $(($i % 2)) -eq 0 ];then
echo $i
fi
done
等于0的时候输出,不等于0则不管
验证结果
只显示奇数
for i in {1..10};do
if [ $(($i % 2)) -ne 0 ];then
echo $i
fi
done
因为除2 不是0就是1
验证
C语言的写法
for ((i=1;i<=10;i=i+2));do
echo $i
done
每次递增两个
验证
当等于i=i+3的时候从1开始每次加三个
for ((i=2;i<=10;i=i+2));do
echo $i
done
显示只有偶数
从2开始每次递增2
三、输出一个矩形
#!/bin/bash
#test
#mpy
for ((i=1;i<=10;i++));do
for ((j=1;j<=10;j++));do
echo -n " *"
done
echo
done
赋予权限 chmod +x jx.sh
./jx.sh
成功获得一个矩形
四、在矩形的基础上显示一个三角形
#!/bin/bash
#test
#mpy
for ((i=1;i<=10;i++));do
for ((j=1;j<=i;j++));do
echo -n " *"
done
echo
done
五、输出九九乘法表
#!/bin/bash
#test
#mpy
for ((i=1;i<10;i++));do
for ((j=1;j<=i;j++));do
echo -n -e "$j x $i = $[i*j]\t"
done
echo
done
这是一个Bash脚本
-
#!/bin/bash
:这是一个shebang,告诉系统要使用bash解释器来运行脚本。 -
#test
和#mpy
:这是注释行,用于说明脚本的用途和功能。 -
for ((i=1;i<10;i++))
:这是一个外循环的for循环,它从1开始迭代,每次增加1,直到i的值小于10为止。 -
for ((j=1;j<=i;j++))
:这是一个嵌套在外循环中的内循环的for循环,它从1开始迭代,每次增加1,直到j的值小于等于i为止。 -
echo -n -e "$j x $i = $[i*j]\t"
:这是一个echo语句,用于打印乘法表的一行。其中$j
和$i
是变量,代表内外循环的迭代值,$[i*j]
表示i和j的乘积。 -
echo
:这是一个空的echo语句,用于打印换行符,以便在打印完一行乘法表后换行。
显示结果
六、猜价格(小游戏)
一、脚本配置
#!/bin/bash
#test
#mpy
rand=$[$RANDOM % 100]
times=0
while true
do
read -p "请输入你要猜测的价格: " price
let times++
if [ $price -eq $rand ];then
if [ $times -eq 1 ];then
echo "你猜对了,真NB,一次就中"
elif [ $times -lt 7 ];then
echo "你猜对了,一共猜测了$times次! "
else
echo "挑战失败! "
echo "正确的价钱是$rand"
fi
exit 0
elif [ $price -gt $rand ];then
echo "猜大了! "
else
echo "猜小了! "
fi
done
二、验证
一、显示结果(第一种)
二、显示结果(第二种)
相关文章:

shell脚本语句(画矩形、三角形、乘法表和小游戏)(#^.^#)
目录 一、语句 一、条件语句 一、以用户为例演示 一、显示当前登录系统的用户信息 二、显示有多少个用户 二、单分支if 一、输入脚本 二、验证结果 三、双分支if 一、输入脚本 二、验证结果 四、多分支if 一、输入脚本 二、验证 二、循环语句 一、shell版本的循环…...

vue3、react组件数据传值对比分析——父组件传递子组件,子组件传递父组件
文章目录 ⭐前言⭐react 组件传值实例💖父组件传值给子组件(props)💖子组件传递事件给父组件props绑定事件💖父组件触发子组件的事件Ref ⭐vue3 组件传值实例💖 父组件传递数据给子组件props💖 …...

2023国赛数学建模C题思路模型代码 高教社杯
本次比赛我们将会全程更新思路模型及代码,大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社…...

wxPython使用matplotlib绘制动态曲线
1.思路 我们创建了一个继承自wx.Frame的自定义窗口类MyFrame。在MyFrame的构造函数中,我们创建了一个matplotlib的Figure对象和一个FigureCanvas对象,用于在窗口中显示绘图结果。然后,我们使用numpy生成了一个包含100个点的x轴坐标数组self.…...

JVM——类的生命周期
文章目录 类加载过程加载验证准备解析初始化 卸载 一个类的完整生命周期如下: 类加载过程 Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢? 系统加载 Class 类型的文件主要三步:加载->连接->…...
【Docker】docker数据卷(数据挂载)持久化
docker数据卷(数据挂载)持久化 一、docker对于数据的管理二、docker挂载主机目录---指定路径挂载三、docker使用数据卷Volume挂载四、数据共享--数据卷容器五、备份和恢复 docker的镜像是由多个只读的文件系统叠加在一起形成的。当我们在我启动一个容器的…...

Spring Boot实现IP地址解析
一、本地解析 如果使用本地ip解析的话,我们将会借助ip2region,该项目维护了一份较为详细的本地ip地址对应表,如果为了离线环境的使用,需要导入该项目依赖,并指定版本,不同版本的方法可能存在差异。 <d…...

小程序中通过canvas生成并保存图片
1. html <canvas class"canvas" id"photo" type"2d" style"width:200px;height: 300px;"></canvas> <button bindtap"saveImage">保存</button> <!-- 用来展示生成的那张图片 --> <image…...

Error creating bean with name ‘esUtils‘ defined in file
报错异常: 背景: esUtils在common服务中、启动media服务时候、报这个异常、后排查esUtils在启动时候发生异常引起的、在相关bean中加入try{}catch{}即可解决问题 String[] split url.split(","); HttpHost[] httpHosts new HttpHost[split.…...

Java开发面试题 | 2023
Java基础 接口和抽象类的区别?Java动态代理HashMap 底层实现及put元素的具体过程currenthashmap底层实现原理?map可以放null值吗,currenthashmap为什么不能放null值synchronze和reetrantlock区别?怎样停止一个运行中的线程&#…...

Java课题笔记~ 自定义拦截器实现权限验证
实现一个权限验证拦截器。 1、修改web.xml文件中请求路径 2、将所有的页面放入WEB-INF目录下 3、开发登录FirstController 4、开发拦截器 5、配置springmvc.xml文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.spri…...

微信小程序使用npm引入三方包详解
目录 1 前言2 微信小程序npm环境搭建2.1 创建package.json文件2.2 修改 project.config.json2.3 修改project.private.config.json配置2.4 构建 npm 包2.5 typescript 支持2.6 安装组件2.7 引入使用组件 1 前言 从小程序基础库版本 2.2.1 或以上、及开发者工具 1.02.1808300 或…...

pytest自动化框架运行全局配置文件pytest.ini
还记得在之前的篇章中有讲到Pytest是目前主要流行的自动化框架之一,他有基础的脚本编码规则以及两种运行方式。 pytest的基础编码规则是可以进行修改,这就是今日文章重点。 看到这大家心中是否提出了两个问题:pytest的基础编码规则在哪可以…...

视频播放实现示例Demo
学习链接 vuespringboot文件分片上传与边放边播实现 同步加载、播放视频的实现 ---- range blob mediaSource 通过调试技术,我理清了 b 站视频播放很快的原理 MSE (Media Source Extensions) 上手指南 浅聊音视频的媒体扩展(Media Source Extension…...
makefile的自动化变量
一、是什么? 自动化变量:makefile依据执行的规则自动变化生成的变量 $(@) 规则的目标文件名 $(^) 所有依赖 依赖列表 $(<)第一个依赖文件名 $(*)规则中目标中%部分名 $(?)所有比目标文件更新的依赖文件列表,空格分隔 二、使用步骤 1.引入库 代码如下(示例): make …...

使用Kind搭建本地k8s集群环境
目录 1.前提条件 2.安装Kind 3.使用Kind创建一个K8s集群 3.1.创建一个双节点集群(一个Master节点,一个Worker节点) 3.2.验证一下新创建的集群信息 3.3.删除刚刚新建的集群 4.安装集群客户端 4.1.安装kubectl 4.1.1.验证kubectl 4.2.安…...

【STM32RT-Thread零基础入门】 7. 线程创建应用(多线程运行机制)
硬件:STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 文章目录 前言一、RT-Thread相关接口函数1. 获取当前运行的线程2. 设置调度器钩子函数 二、程序设计1. 头文件包含及宏定义2. 线程入口函数定义3. main函数设…...
.net日志系统
.NET 平台提供了强大的日志记录系统,用于在应用程序中记录各种事件、错误和调试信息。最常用的日志记录库是 Microsoft.Extensions.Logging,它是一个通用的日志接口和基础框架,可以与多种日志实现集成。以下是如何使用 .NET 日志系统的基本步骤: 安装 NuGet 包:首先,您需…...

SpringCloud学习笔记(二)_Eureka注册中心
一、Eureka简介 Eureka是一项基于REST(代表性状态转移)的服务,主要在AWS云中用于定位服务,以实现负载均衡和中间层服务器的故障转移。我们称此服务为Eureka Server。Eureka还带有一个基于Java的客户端组件Eureka Clientÿ…...
spark的eventLog日志分析
查找满足指定条件的app_id查询条件: 表名、时间、节点名时间限定: 最好适当放大, 不知道什么原因有点不准eventLog的存放路径: spark.history.fs.logDirectory 1. spark-sql 先限定时间段;数据是逐行读入的, 但 app_id要按整个文件过滤, 按每个条件打标;按app_id粒度聚合, 查…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...