31、shell循环

news2025/1/5 11:00:31

一、循环

循环:循环是一种重复执行一段代码的结构。只要满足循环的条件,会一直执行这个代码。

循环条件:在一定范围之内,按照指定的次数来执行循环。

循环体:在指定的次数内,执行的命令序列。只要条件满足,循环体会被一直执行。

循环和遍历:

遍历值得就是对数据结构中每个元素进行一次访问的过程。通常和循环一起使用。

访问的目的:就是为了执行特定的操作

循环是操作

遍历就是输出

1.1、循环的作用:

1、重复执行代码,尤其是统一的,相同的,批量的操作。

2、提高代码的重复利用率。

3、提高人工的效率,减少人工的干预,提高效率。

4、简化程序的逻辑,降低代码出错的可能性。

二、for循环

for循环:已知循环次数的场景。

while循环:和for循环可以通用,常用于死循环

until:条件不满足才执行循环,条件不满足,不执行。

for循环的格式:

格式1

for 变量名称 (前面没有$) in 范围 {}

for 变量名称 (前面没有$) in 范围 {}

do

​ 命令序列

done

[root@localhost opt]# vim test11.sh

for i in {1..17}
do
 echo $i
done

[root@localhost opt]# sh test11.sh
1
2
3
4
#现在创建一个文件passwd.txt
#在文件中创建三行,xy101  xy102  xy103
#使用循环创建这个三个用户,统一密码为123456.
[root@localhost opt]# vim passwd.txt
[root@localhost opt]# vim test12.sh

for user in $(cat /opt/passwd.txt)
do
 useradd $user
 echo 123456 | passwd --stdin $user
done


[root@localhost opt]# sh test12.sh
更改用户 xy101 的密码 。
passwd:所有的身份验证令牌已经成功更新。
useradd:用户“xy102”已存在
更改用户 xy102 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 xy103 的密码 。
passwd:所有的身份验证令牌已经成功更新。

在这里插入图片描述

在这里插入图片描述

格式2:类c语言格式:

for ((表达式1;表达式2;表达式3))

for ((表达式1;表达式2;表达式3))

do

命令序列

done

for ((i=0;i<=5;i++))

表达式1:定义变量并且赋予初始值

表达式2:循环的范围

表达式3:循环的方式,循环一次自增1

#累加求和?1-100一直相加,最后的结果

[root@localhost opt]# vim test13.sh


#累加求和?1-100一直相加,最后的结果
sum=0
for ((i=0;i<=100;i++))
do
 sum=$(($sum+$i))
done
echo $sum



[root@localhost opt]# sh test13.sh
5050
[root@localhost opt]# vim test13.sh


#累加求和?1-100一直相加,最后的结果
#分别求出奇数和以及偶数和
sum1=0
sum2=0
for ((i=0;i<=100;i++))
do
 if [[ $i%2 -eq 0 ]]
 then
 sum1=$(($sum1+$i))
 else
 sum2=$(($sum2+$i))
 fi
done
echo $sum1
echo $sum2


[root@localhost opt]# sh test13.sh
2550
2500
[root@localhost opt]# vim test14.sh



#累加求和?1-100一直相加,最后的结果
#分别求出奇数和以及偶数和
read -p "输入一个0-100之间的随机数:" a
sum1=0
for ((i=1;i<=$a;i++))
do
 sum1=$(($sum1+$i))
done
echo $sum1



[root@localhost opt]# vim test14.sh
[root@localhost opt]# sh test14.sh
输入一个0-100之间的随机数:34
595
[root@localhost opt]# sh test14.sh
输入一个0-100之间的随机数:100
5050

格式3:死循环

死循环

for((;😉)

do

命令序列

done

在这里插入图片描述

#break:在循环内部,执行到break命令时,会立即跳出当前循环,并

在这里插入图片描述

#continue:把执行到contiune时,跳出当前循环,但是如果循环条件依然满足,>
会执行后续的循环条件。

在这里插入图片描述

在这里插入图片描述

[root@localhost opt]# vim test14.sh



a=$((RANDOM%10+1))
for ((i=1;;i++))
do
read -p "输入0-10数字" b
  if [[ $b -gt $a ]]
  then
  echo "猜大了"
    elif [[ $b -lt $a ]]
  then
    echo "猜小了"
  else
  echo "猜对了,猜了$i次"
  break
  fi
done



[root@localhost opt]# sh test14.sh
输入0-10数字5
猜大了
输入0-10数字6
猜大了
输入0-10数字7
猜大了
输入0-10数字3
猜大了
输入0-10数字2
猜对了,猜了5次

作业:
例题:购物
逛淘宝选购商品,
每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),
每次选购完或不买都会提示用户是否继续逛下一家商店,
如果不再继续逛的话进行购物车结算总额。.

[root@localhost opt]# vim test15.sh

a=500
b=400
c=300
d=150
e=50
sum=0
read -p "是否进入这家店" h
if [[ $h == yes ]]
then
echo "进入这家店"
fi
for ((;;))
do
 for ((;;))
 do
  echo "a:衣服500元,b:裤子400元,c:鞋子300元,d:帽子150元,e:袜子50元"
  read -p "加入购物车" i
  sum=$(($sum+$i))
  read -p "是否结束加入购物车" k
  if [[ $k == yes ]]
  then
  echo "完成加入购物车"
  echo "$sum"
  break
  fi
done
  read -p "是否购买yes/no" j
  if [[ $j == yes ]]
  then
  echo "$sum"
  echo "是否继续逛下一家"
  else
  echo "是否继续逛下一家"
 fi
break
done



[root@localhost opt]# sh test15.sh
是否进入这家店ys
a:衣服500元,b:裤子400元,c:鞋子300元,d:帽子150元,e:袜子50元
加入购物车^C
[root@localhost opt]# sh test15.sh
是否进入这家店yes
进入这家店
a:衣服500元,b:裤子400元,c:鞋子300元,d:帽子150元,e:袜子50元
加入购物车a
是否结束加入购物车no
a:衣服500元,b:裤子400元,c:鞋子300元,d:帽子150元,e:袜子50元
加入购物车a
是否结束加入购物车no
a:衣服500元,b:裤子400元,c:鞋子300元,d:帽子150元,e:袜子50元
加入购物车b
是否结束加入购物车yes
完成加入购物车
1400
是否购买yes/noyes
1400
是否继续逛下一家
[root@localhost opt]# sh test15.sh
是否进入这家店yes
进入这家店
a:衣服500元,b:裤子400元,c:鞋子300元,d:帽子150元,e:袜子50元
加入购物车a
是否结束加入购物车no
a:衣服500元,b:裤子400元,c:鞋子300元,d:帽子150元,e:袜子50元
加入购物车c
是否结束加入购物车no
a:衣服500元,b:裤子400元,c:鞋子300元,d:帽子150元,e:袜子50元
加入购物车d
是否结束加入购物车yes
完成加入购物车
950
是否购买yes/nono
是否继续逛下一家

作业2:某山顶上有一颗香蕉树,一只猴子第一天从树上摘了若干根香蕉,当即就吃了一半,还不过瘾,
又多吃了一根。第二天猴子又将剩下的香蕉吃了一半,禁不住诱惑,又多吃了一根香蕉。
依此类推,每天都将剩余的香蕉吃一半后再多吃一根。到了第十天,猴子发现只剩一根香蕉了,
请问这只猴子在第一天总共摘了多少根香蕉?

[root@localhost opt]# vim test17.sh

a=1
for ((day=1;day<10;day++))
do
 a=$(((a+1)*2))
done
echo "第一天猴子总共摘了$a根香蕉"

[root@localhost opt]# sh test17.sh
第一天猴子总共摘了1534根香蕉

ono
是否继续逛下一家




作业2:某山顶上有一颗香蕉树,一只猴子第一天从树上摘了若干根香蕉,当即就吃了一半,还不过瘾,
又多吃了一根。第二天猴子又将剩下的香蕉吃了一半,禁不住诱惑,又多吃了一根香蕉。
依此类推,每天都将剩余的香蕉吃一半后再多吃一根。到了第十天,猴子发现只剩一根香蕉了,
请问这只猴子在第一天总共摘了多少根香蕉?

[root@localhost opt]# vim test17.sh

a=1
for ((day=1;day<10;day++))
do
a= ( ( ( a + 1 ) ∗ 2 ) ) d o n e e c h o " 第一天猴子总共摘了 (((a+1)*2)) done echo "第一天猴子总共摘了 (((a+1)2))doneecho"第一天猴子总共摘了a根香蕉"

[root@localhost opt]# sh test17.sh
第一天猴子总共摘了1534根香蕉


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1820714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

建筑垃圾/城市固废倾倒转移乱象:青犀AI智能视频监控方案助力城市环保监管

近日有新闻记者报道&#xff0c;中央生态环境保护督察组在上海、浙江、江西、湖北、湖南、重庆、云南7省市督察发现&#xff0c;一些地方建筑垃圾处置工作存在明显短板&#xff0c;乱堆乱倒问题时有发生&#xff0c;比如&#xff0c;江西湘东区在杨家田地块违规设置弃土场&…

看完“土猪拱白菜“的张锡峰,我明白计算机有多难了

计算机有多难&#xff1f; 今天无意中&#xff0c;看到一篇关于「"土猪拱白菜"学霸后悔报考浙大计算机」的文章。 或许会有不少和我刚开始一样懵圈的同学&#xff1a;张锡峰是谁&#xff1f;"土猪拱白菜"又是什么梗&#xff1f; 带着疑惑&#xff0c;我打开…

项目实战--文档搜索引擎

在我们的学习过程中&#xff0c;会阅读很多的文档&#xff0c;例如jdk的API文档&#xff0c;但是在这样的大型文档中&#xff0c;如果没有搜索功能&#xff0c;我们是很难找到我们想查阅的内容的&#xff0c;于是我们可以实现一个搜索引擎来帮助我们阅读文档。 1. 实现思路 1…

《C++程序设计》银行管理系统

莫思身外无穷事 且尽生前有限杯 我们先来看一下项目需求&#xff1a; 【场景】 在日常生活中&#xff0c;我们普遍接触到窗口服务系统&#xff0c;如到银行柜台办理业务、景区现场购买门票等。当需要办理业务的顾客数超过窗口数量时&#xff0c;我们需遵循排队等待原则。 【需…

不想搭集群,直接用spark

为了完成布置的作业&#xff0c;需要用到spark的本地模式&#xff0c;根本用不到集群&#xff0c;就不想搭建虚拟机&#xff0c;hadoop集群啥的&#xff0c;很繁琐&#xff0c;最后写作业还用不到集群&#xff08;感觉搭建集群对于我完成作业来说没有什么意义&#xff09;&…

Eclipse创建Spring项目

第一步&#xff1a;先用Eclipse创建一个tomcat项目 打开eclipse 配置tomcat 这里点击add去添加tomcat 创建项目 写好项目名字&#xff0c;点击next 将这个Deploy path修改一下 配置一下项目&#xff0c;将项目部署到tomcat上面去 写个html测试一下 <html><h1>Hel…

公司活动想找媒体报道宣传怎样邀请媒体?

在当今信息爆炸的时代,对于正处于成长阶段的中小企业而言,有效且成本控制得当的宣传策略是推动品牌发展、扩大市场影响力的关键。尤其是在预算有限的情况下,如何让“好钢用在刀刃上”,实现宣传效果的最大化,成为众多企业共同面临的挑战。在此背景下,智慧软文发布系统网站作为一…

会声会影2023软件:安装包下载 丨不限速下载丨亲测好用

会声会影(Corel VideoStudio)为加拿大Corel公司发布的一款功能丰富的视频编辑软件。 会声会影2023简单易用&#xff0c;具有史无前例的强大功能&#xff0c;拖放式标题、转场、覆叠和滤镜&#xff0c;色彩分级、动态分屏视频和新增强的遮罩创建器&#xff0c;超越基本编辑&…

VR虚拟仿真技术模拟还原给水厂内外部结构

在厂区的外围&#xff0c;我们采用VR全景拍摄加3D开发建模的方式&#xff0c;还原了每一处细节&#xff0c;让你仿佛置身于现场&#xff0c;感受那份宁静与庄重。 当你踏入厂区&#xff0c;我们为你精心策划了一条游览路线&#xff0c;从门口到各个重要场景&#xff0c;一一为…

使用ecal protobuf的时候编译过程中报ArenaString、FileDescriptor等无法解析的外部符号错误

c cmake构建的项目在使用ecal和protobuf的时候编译过程报ArenaString、FileDescriptor等无法解析的外部符号错误 查找了很多官网和github上很多资料都没有提及相关的内容。 在windows编译protobuf后&#xff0c;cmake连接找不到符号 - 简书 上提及要使用config模式 设置了co…

TK防关联引流系统:全球多账号运营,一“键”掌控!

在TikTok的生态系统中&#xff0c;高效管理多个账号对于品牌推广的成功起着决定性的作用。TK防关联引流系统&#xff0c;作为一款专门为TikTok用户打造的强大工具&#xff0c;为全球范围内的多账号运营提供了坚实的支持。 TK防关联引流系统的核心优势体现在以下几个方面&#x…

vue 生命周期 钩子函数 keep-alive activated deactivated

一、activated deactivated 在被keep-alive包含的组件/路由中&#xff0c;会多出两个生命周期的钩子:activated 与 deactivated。在 2.2.0 及其更高版本中&#xff0c;activated 和 deactivated 将会在树内的所有嵌套组件中触发。activated在组件第一次渲染时会被调用&#x…

Linux2-系统自有服务防火墙与计划任务

一、什么是防火墙 防火墙主要用于防范网络攻击&#xff0c;防火墙一般分为软件防火墙、硬件防火墙 1、Windows中的防护墙设置 2、防火墙的作用 3、Linux中的防火墙分类 Centos6、Centos6>防火墙>iptables防火墙 防火墙系统管理工具 Centos7>防火墙>firewalld防火…

SECS/GEM 底层协议解析

SECS是什么&#xff1f; SEMI电子半导体联盟,为实现设备与工厂系统的快速对接数据,状态,配方,程序的标准化协议,SECS具有多个版本,本文主要介绍E5协议 HSMS通信方式,设备端的处理流程(Passive模式)。 SECS关键字 Host 主机一般指向工厂控制系统EQP 单机设备Active 在Tcp通信…

怎么用住宅代理IP?使用住宅代理IP有哪些好处?

如何使用住宅代理IP&#xff1a; 使用住宅代理IP主要涉及以下几个步骤&#xff1a; 选择合适的代理IP供应商&#xff1a; 考虑供应商的可靠性、代理IP的质量、速度、稳定性以及价格。选择信誉良好且服务稳定的供应商&#xff0c;确保获得高质量的代理IP服务。配置代理IP&#…

防止数据泄露的软件哪家强?四款防泄密软件助您安心守护企业机密

在信息化时代&#xff0c;企业数据安全成为了关乎生死存亡的关键因素。 数据泄露事件频发&#xff0c;选择一款高效可靠的防泄密软件变得尤为重要。 以下是六款市场上备受推崇的防泄密软件&#xff0c;它们以各自的优势为企业数据安全保驾护航。 1. 域智盾软件 软件以其全面…

C++笔记:模板

模板 为什么要学习模板编程 在学习模板之前&#xff0c;一定要有算法及数据结构的基础&#xff0c;以及重载&#xff0c;封装&#xff0c;多态&#xff0c;继承的基础知识&#xff0c;不然会出现看不懂&#xff0c;或者学会了没办法使用。 为什么C会有模板&#xff0c;来看下面…

如何在Excel中快速找出含有多位小数的数字

在日常工作中&#xff0c;使用Excel处理数据是一项常见任务。然而&#xff0c;有时我们会遇到一些看似简单&#xff0c;却令人头疼的问题。例如&#xff0c;当我们在一个包含大量数据的列中发现某个数字的小数点位数过多时&#xff0c;如何快速找到这个数字&#xff1f;本文将介…

从零开始的<vue2项目脚手架>搭建:vite+vue2+eslint

前言 为了写 demo 或者研究某些问题&#xff0c;我经常需要新建空项目。每次搭建项目都要从头配置&#xff0c;很麻烦。所以我决定自己搭建一个项目初始化的脚手架&#xff08;取名为 lily-cli&#xff09;。 脚手架&#xff08;scaffolding&#xff09;&#xff1a;创建项目时…

高考志愿专业选择:计算机人才需求激增,人工智能领域成热门

随着2024年高考的落幕&#xff0c;数百万高三学生站在了人生新的十字路口&#xff0c;面临着一个重要的抉择&#xff1a;选择大学专业。这一选择不仅关乎未来四年的学习生涯&#xff0c;更可能决定一个人一生的职业方向和人生轨迹。在众多专业中&#xff0c;计算机相关专业因其…