西安网站制作顶尖/域名注册费用
目录
一.for循环
1.1.基本格式
1.2.类C语言格式
二.while循环
2.1.基本格式
2.2.死循环语句
三.跳出循环
3.1.continue跳出循环
3.2.break跳出循环
四.常用循环
4.1.循环打印九九乘法表
4.2.循环ping测试某个网段网络连通性
4.3.while死循环实现猜数字游戏
4.4.数字累加脚本(1-100)
一.for循环
1.1.基本格式
for 变量名称(注意是名称不是变量$等) [ in 名称范围 ] (可以不写)
do
执行内容 若满足循环则做什么动作
done for循环结束标志
练习:
vim sb.sh #创建脚本sb.sh
脚本内容:
#!/bin/bash
for i in {1..10} #for循环10次,第一次i=1,第二次i=2以此类推直到i=10
do
echo "$i" #循环动作,每次输出$i
done #for语句结束标志bash sb.sh #调用shell执行脚本sb.sh
1.2.类C语言格式
for (( 表达式1 ;表达式2;表达式3 ))
do
执行内容 #若满足循环则做什么动作
done #for循环结束标志
表达式1:定义变量并赋值
表达式2:决定是否循环
表达式3:决定循环变量如何改变,决定循环什么时候结束
练习:
vim kk.sh #创建脚本kk.sh
脚本内容:
#!/bin/bash
for(( i=0;i<=10;i++ )) #定义for循环i变量初始值为0,循环条件i小于等于10,每循环一次i自加1
do
echo "$i" #for循环每循环一次执行一次输出$i
done #for语句结束标志bash kk.sh #调用shell执行脚本
二.while循环
2.1.基本格式
用于不知道循环次数,需要主动结束循环或达到条件结束循环。
while [ 判断条件] 使用while循环满足条件执行do,不满足不执行
do
执行动作 while循环执行动作
done while循环结束标志
练习:
vim ll.sh #创建脚本ll.sh
脚本内容:
#!/bin/bash
i=0
while [ $i -le 10 ] #变量i小于等于10时执行while循环
do
echo "$i" #循环执行内容,每循环一次打印$i
let i++ #每循环一次计算一次i++ 即i自己+1
done #while语句结束标志 bash ll.sh #调用bash执行ll.sh脚本
2.2.死循环语句
①while [1 -eq 1] #判断条件写一个永久为真的条件
do # 一直执行do内的命令
done
②while true #直接写判断条件为真
do #一直执行do内的命令
done
③while : #判断条件为冒号也表示死循环
do # 一直执行do内的命令
done #while语句结束标志
三.跳出循环
3.1.continue跳出循环
表示满足continue条件时跳出循环,但是不影响后续循环执行
vim qq.sh #创建脚本qq.sh
脚本内容:
#!/bin/bash
for i in {1..5} #for循环5次从i=1开始到i=5
do
if [ $i -eq 3 ] #if判断语句,若$1等于3则执行then的内容
then
continue #当$i=4时跳出循环但不影响后面循环
fi #结束if语句
echo "$i" #没执行一次for循环输出一次$i
done #for循环结束语句bash qq.sh #调用shell执行脚本
3.2.break跳出循环
在某个循环中遇到break直接结束此次循环,但是不影响外边嵌套的循环。
break [数字] 结束数字中的几次循环,若为2则结束自己所在循环和外边嵌套的一层循环,若为3则结束自己所在循环和外边嵌套的2层循环
举例:
vim o.sh #创建o.sh脚本
脚本内容:
#!/bin/bash
for j in {1..3} #第一层for循环,j=1,2,3各执行一次do的内容
do #第一层for循环的执行内容for i in {1..5} #第二层for循环,i=1,2,3,4,5各执行一次do的内容do #第二层for循环的执行内容 if [ $i -eq 3 ] #第二层for循环中添加的if判断语句,当$i=3是执行then内容then break #第二层for循环判断语句执行命令,break结束循环fi #if语句结束echo "$i" #第二层for循环语句执行每循环一次输出$idone #第二层for循环语句结束标志
done #第一层for循环语句结束标志bash o.sh #调用bash执行o.sh脚本
执行结果:第二层执行在$i=3是结束了循环,所以只能输出1和2,
第一层for循环是循环3次,所以输出了3次。
1
2
1
2
1
2
四.常用循环
4.1.循环打印九九乘法表
①第一步for循环打印一行9个*号
②第二步再添加一个for循环打印一个9行9列的*号正方形
②第三步将*号正方形斜砍一般形成9*9乘法表的基本格式
③第四步将*号9*9乘法表格式用乘法算式替换
第一步: vim jj.sh #创建jj.sh脚本 脚本内容: #!/bin/bash for i in {1..9} #for循环9次从i=1开始 do echo -n "*" #每循环一次打印一个*,echo -n参数表示不换行 done #此for循环语句结束 bash jj.sh #调用shell执行脚本 执行结果: *********第二步: vim jj.sh #编辑jj.sh脚本 脚本内容: #!/bin/bash for j in {1..9} #添加打印列循环,循环9次从j=1开始 do #j循环时做do中的内容 for i in {1..9} #第一步for循环内容不变doecho -n "*"done echo #列循环每循环一次打印一行空格进行换行 done #列循环for语句结束标志 bash jj.sh #调用shell执行脚本 执行结果: ********* ********* ********* ********* ********* ********* ********* ********* *********第三步: vim jj.sh #编辑jj.sh脚本 脚本内容: #!/bin/bash for j in {1..9} #列循环内容不变 do for i in `seq $j` #修改行循环i的取值范围为展开变量j,即当j=1时i取值只有1,所以循环一次。当 j=2时,i取值为1和2,所以i=1和i=2各循环一次,循环2次。以此类推到j=9doecho -n "*"done echo done bash jj.sh #调用shell执行脚本 执行结果: * ** *** **** ***** ****** ******* ******** *********第四步: vim jj.sh #编辑jj.sh脚本 脚本内容: #!/bin/bash for j in {1..9} #列循环内容不变 dofor i in `seq $j`doecho -ne "$j*$i=$[ $j*$i ]\t" #行输出内容修改为9*9算式和结果。$[ ]表示计算里面的正整数结果,echo -e参数表示调用转义符,\t表示制表符即循环时输出一个tab键done echo done bash jj.sh #调用shell执行脚本 输出结果: 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
4.2.循环ping测试某个网段网络连通性
需求:测试用户输入的某个32位网段是否可以ping通,且若可以ping通将此ip输出到文件host.txt中。
①第一步读取用户输入的32位网段。
②使用for循环生成用户输入网段的所有ip。
③使用ping命令在循环中测试用户输入网段内所有ip,注意指定ping包个数和超时结束时间,否则一直ping。
④将循环检查网络连通性放入后台执行。
vim p.sh #创建p.sh脚本
脚本内容:
#!/bin/bash
read -p "请输入需要测试的网段,格式为(192.168.47.):" ip #读取用户输入内容为变量ip
for i in {1..254} #for循环254次,从i=1开始
do
{ #将{}内容当成一个整体
ping -c2 -w2 $ip$i &>/dev/null #指定ping包为2个超时结束时间为2秒且将产生的内容全部放入null垃圾桶中,&符号表示错误输出也放入null垃圾桶中if [ $? -eq 0 ] #if条件判断如果上一个循环执行的命令是正确的则$?返回0,若等于0执行then的内容thenecho "$ip$i is online" #if条件成立执行打印echo $ip$i >> host.txt #将if条件成立的ip追加到host.txt文件中elseecho "$ip$i is offline" #if添加判断不成立执行打印fi
}& #将循环成立的内容放入后台执行
done
wait #执行结束不等待直接退出
4.3.while死循环实现猜数字游戏
需求:生成随机1-100的价格给用户猜测直到猜对结束游戏,并统计用户猜对猜了几次。
①第一步生成一个随机1-100数字
②第二步使用while循环写一个死循环直到用户猜对才结束循环
③在执行循环的过程中统计循环执行次数并输出
vim e.sh #创建脚本e.sh
脚本内容:
#!/bin/bash
num=`echo $[ RANDOM%100+1 ]` #$[RANDOM]是一个0-32767的随机数,%100+1除100取余+1表示生成0-100随机数
time=0 #定义猜对次数变量time初始值为0
while true #生成while死循环
do #循环动作为do内的内容
let time++ #每循环一次time变量自加1
read -p "请输入您猜测的数字,范围(1-100):" user #读取用户输入的内容为变量userif [ $user -eq $num ] #条件判断分支1,如果用户输入等于随机生成执行then动作then echo "您猜对了,您一共猜测了$time次" #if分支1条件成立执行输出break #if分支1条件成立则结束本次循环elif [ $user -gt $num ] #条件判断分支2,如果用户输入大于随机生成执行本次then动作thenecho "您猜大了,请往小猜" #条件判断分支2成立提示用户猜大了elif [ $user -lt $num ] #条件判断分支3,如果用户输入小于随机生成执行本次then动作then echo "您猜小了,请往大猜" #条件判断分支3成立提示用户猜小了fi #if语句结束
donebash e.sh #调用bash执行脚本
执行结果
请输入您猜测的数字范围(1-100):50
您猜小了,请往大猜
请输入您猜测的数字范围(1-100):60
您猜小了,请往大猜
请输入您猜测的数字范围(1-100):70
您猜大了,请往小猜
请输入您猜测的数字范围(1-100):65
您猜大了,请往小猜
请输入您猜测的数字范围(1-100):62
您猜小了,请往大猜
请输入您猜测的数字范围(1-100):63
恭喜您猜对了,您一共猜了6次
4.4.数字累加脚本(1-100)
需求:编写脚本实现计算从1加到100的值
①累加需要用到循环,已知循环次数时使用for循环
②也可以使用while循环达到累加条件时结束循环
vim m.sh #创建m.sh脚本
脚本内容:
sum=0 #定义变量sum初始值为0
for i in {1..100} #for循环 i取值从1到100
do
sum=$[ i+sum ] #每次循环内容计算变量i+sum的值赋值给sum
done #for语句结束标志
echo "1-100累加值为:$sum" #循环结束后输出内容bash m.sh #调用shell执行脚本
执行结果:
"1-100累加值为:5050"
相关文章:

Linux中shell脚本——for、while循环及脚本练习
目录 一.for循环 1.1.基本格式 1.2.类C语言格式 二.while循环 2.1.基本格式 2.2.死循环语句 三.跳出循环 3.1.continue跳出循环 3.2.break跳出循环 四.常用循环 4.1.循环打印九九乘法表 4.2.循环ping测试某个网段网络连通性 4.3.while死循环实现猜数字游戏 4.4.数…...

【数字实验室】时钟切换
大部分开发者使用 BUFGCTRL 或 BUFGMUX进行时钟切换,它们在时钟切换上可以提供无毛刺输出。然而,了解所涉及的原理是有好处的。 当然,无论我们在同步逻辑中使用哪种技术,重要的是要确保在进行时钟切换时输出上没有毛刺。任何故障都…...

线性代数的学习和整理7:各种特殊效果矩阵特例(草稿-----未完成)
目录 1 矩阵 1.1 1维的矩阵 1.2 2维的矩阵 1.3 没有3维的矩阵---3维的是3阶张量 2 方阵 3 单位矩阵 3.1 单位矩阵的定义 3.2 单位矩阵的特性 3.3 为什么单位矩阵I是 [1,0;0,1] 而不是[0,1;1,0] 或[1,1;1,1] 3.4 零矩阵 3.4 看下这个矩阵 [0,1;1,0] 3.5 看下这个矩阵…...

springBoot 配置文件 spring.mvc.throw-exception-if-no-handler-found 参数的作用
在Spring Boot应用中,可以通过配置文件来控制当找不到请求处理器(handler)时是否抛出异常。具体的配置参数是spring.mvc.throw-exception-if-no-handler-found。 默认情况下,该参数的值为false,即当找不到请求处理器时…...

linux部署kafka3.5.1(单机)
一、下载jdk17 kafka3.x版本需要jdk11以上版本才能更好的兼容,jdk11、jdk17都是LTS长期维护版本,而且jdk17支持springboot3.x,所以我选择了openjdk17。 下载地址: Archived OpenJDK GA Releaseshttps://jdk.java.net/archive/ 二、上传jdk安装包解压 …...

css 实现svg动态图标效果
效果演示: 实现思路:主要是通过css的stroke相关属性来设置实现的。 html代码: <svgt"1692441666814"class"icon"viewBox"0 0 1024 1024"version"1.1"xmlns"http://www.w3.org/2000/svg"p-id"…...

软件测试项目实战,电商业务功能测试点汇总(全覆盖)
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 支付功能怎么测试…...

LeetCode[274]H指数
难度:Medium 题目: 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指…...

MyBatis-Plus快速开始[MyBatis-Plus系列] - 第482篇
悟纤:师傅,MyBatis-Plus被你介绍的这么神乎其乎,咱们还是来的点实际的吧。 师傅:那真是必须的,学习技术常用的一种方法,就是实践。 悟纤:贱贱更健康。 师傅:这… 师傅:…...

CF1003A Polycarp‘s Pockets 题解
题目传送门 题目意思: 给你 n n n 个数,求出最多相同的数的个数。 这道题目有两种解法。 方法一:桶排 一边输入,一边将第 i i i 个数 a i a_i ai 出现的次数存在一个数组 b b b 的第 a i a_i ai 个位置。输入完后遍历…...

数据库厂商智臾科技加入龙蜥社区,打造多样化的数据底座
近日,浙江智臾科技有限公司(以下简称“智臾科技”)正式签署 CLA 贡献者许可协议,加入龙蜥社区(OpenAnolis)。 智臾科技主创团队从 2012 年开始投入研发 DolphinDB。DolphinDB 作为一款基于高性能时序数据库…...

一天赚四五十的副业,可以试试这几种
大家都希望能够有额外的零花钱,尤其是对于学生和不收入稳定的人来说。今天,我将分享一些简单实用的赚钱技巧,帮助你每天赚取四五十的零花钱,让你的钱包更丰盈。 第一种:蚂蚁路客和友活来了 支付宝旗下两款接任务拍门…...

OpenCV 中的色彩空间 (C++ / Python)
在本教程中,我们将了解计算机视觉中使用的流行色彩空间,并将其用于基于颜色的分割。我们还将分享 C++ 和 Python 的演示代码。...

邀请函 | 高质量区块链·元宇宙—标准行系列沙龙(北京站)即将开启
区块链、元宇宙是近年来备受关注的新兴技术,也是推动数字经济发展的重要力量。高质量标准引领高质量发展,加快形成标准引领,充分释放区块链、元宇宙对实体经济牵引赋能效应,推进形成相关产业体系高质量发展新格局刻不容缓。 为进…...

php hmacsha256加密的算法
HMAC-SHA256是一种基于哈希算法的消息认证码算法,用于验证数据的完整性和真实性。它将密钥和数据一起进行哈希运算,生成一个固定长度的摘要值。只有知道密钥的人才能够验证该摘要值的真实性。 在PHP中,可以使用hash_hmac函数来计算HMAC-SHA2…...

Spring源码编译教程
1. Spring版本是5.3.10 2. 下载gradle依赖 Spring是通过gradle来编译源码下载依赖的,.gradle文件夹可以理解为gradle的仓库(和mave类似,不懂gradle的先这么理解),而我给大家的这个仓库,只包含了Spring源码…...

Python入门教程 | Python简介和环境搭建
Python 简介 Python是一种高级编程语言,由荷兰人Guido van Rossum于1991年创建。它以其简单易学、可读性强和丰富的生态系统而受到广泛喜爱。它被广泛应用于各个领域,包括Web开发、科学计算、数据分析、人工智能等。 Python的特点 简洁易读:…...

阿里云ECS服务器企业级和共享型介绍_企业级常见问题解答FAQ
阿里云企业级服务器是什么?企业级和共享型有什么区别?企业级服务器具有独享且稳定的计算、存储、网络资源,如ECS计算型c6、通用型g8等都是企业级实例,阿里云百科分享什么是企业级云服务器、企业级实例的优势、企业级和共享型云服务…...

leetcode做题笔记92. 反转链表 II
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 思路一:头插法 struct ListNode *reverseBetween(struct ListNode *h…...

springboot引入druid解析sql
一、前言 在开发中,有时我们可能会需要获取SQL中的表名,那么因为不同的数据源类型SQL会存在部分差异,那么我们就可以使用alibaba 的druid包实现不同的数据源类型的sql解析。 二、引入相关maven依赖 <dependency><groupId>com.a…...

学习笔记十九:Pod常见的状态和重启策略
Pod常见的状态和重启策略 常见的pod状态第一阶段:第二阶段:扩展: pod重启策略测试Always重启策略正常停止容器内的tomcat服务非正常停止容器里的tomcat服务 测试never重启策略正常停止容器里的tomcat服务非正常停止容器里的tomcat服务 测试On…...

Spring的ApplicationEvent简单使用
ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。事件发布者并不需要考虑谁去监听,监听具体的实现…...

python程序员面试题之:set vs tuple vs list vs dict
首先,set/tuple/list/dict都是存储变量的python类型,四者之间有异有同。 首先,set存储无序不重复序列。 set_b {1,2,4} print(set_b[0]) TypeError: ‘set’ object is not subscriptable set 会自动去重,所以根据这个特性可以对…...

STM32 F103C8T6学习笔记11:RTC实时时钟—OLED手表日历
之前在 学习笔记10文章 做了一个简易的,使用定时器计时的简单时钟,现在使用RTC实时时钟同步代替定时器来实现一下OLED手表日历,接着上个实验文章进行完善~~ 文章提供源码、测试工程下载、测试效果图。 目录 RTC实时时钟: 简介&…...

无法将“环境变量”项识别为 cmdlet、函数、脚本文件或可运行程序的名称(pycharm)
无法将“配置的任何一个环境变量”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 记录解决“无法将“C:......conda.exe”项识别为 cmdlet、函数、脚本文件或可运行程序的名称”以及“表达式或语句中包含意外的标记”的系列问题(VSCode开发环境)一、Conda.exe无法正常识…...

基于图像链接的批量下载
1. 获取图像路径 1.1 给定图像链接,这是一张图像 image_url “https://univs-news-1256833609.cos.ap-beijing.myqcloud.com/123/upload/resources/image/7467914.jpg”1.1通过网站规则得到其想要的图像链接 image_urls [ f"https://univs-news-125683360…...

mongodb使用心得
入门 术语 collection:相当于db的表 document:相当于表的记录 启动 单机模式启动mongo server mongod --dbpath D:\programs\mongodb-4.2.8\data\dbreplica set模式启动 replica set模式其实就是主从模式。 做mongo的启动配置文件: …...

学习Vue:响应式原理与性能优化策略
性能优化是Vue.js应用开发中的一个关键方面,而深入了解响应式原理并采用有效的性能优化策略可以显著提升应用的性能。本文将解释响应式原理并介绍一些性能优化策略,旨在帮助您构建高性能的Vue.js应用。 响应式原理 Vue.js的响应式原理是通过利用Object.…...

神经网络基础-神经网络补充概念-43-梯度下降法
概念 梯度下降法(Gradient Descent)是一种优化算法,用于在机器学习和深度学习中最小化(或最大化)目标函数。它通过迭代地调整模型参数,沿着梯度方向更新参数,以逐步接近目标函数的最优解。梯度…...

Reids之Set类型解读
目录 基本介绍 命令概述 SADD key member1 [member2] SCARD key SINTER key1 [key2] SMEMBERS key SPOP key SUNION key1 [key2] 基本介绍 新的存储需求:存储大量的数据 在查询方面提供更高的效率需要的存储结构:能够保存大量的数据&#x…...