31、shell循环

一、循环

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

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

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

循环和遍历:

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

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

循环是操作

遍历就是输出

1.1、循环的作用:

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

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

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

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

二、for循环

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

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

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

for循环的格式:

格式1

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

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

do

​ 命令序列

done

[root@localhost opt]# vim test11.shfor i in {1..17}
doecho $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.shfor user in $(cat /opt/passwd.txt)
douseradd $userecho 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++))
dosum=$(($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++))
doif [[ $i%2 -eq 0 ]]thensum1=$(($sum1+$i))elsesum2=$(($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++))
dosum1=$(($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.sha=$((RANDOM%10+1))
for ((i=1;;i++))
do
read -p "输入0-10数字" bif [[ $b -gt $a ]]thenecho "猜大了"elif [[ $b -lt $a ]]thenecho "猜小了"elseecho "猜对了,猜了$i次"breakfi
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.sha=500
b=400
c=300
d=150
e=50
sum=0
read -p "是否进入这家店" h
if [[ $h == yes ]]
then
echo "进入这家店"
fi
for ((;;))
dofor ((;;))doecho "a:衣服500元,b:裤子400元,c:鞋子300元,d:帽子150元,e:袜子50元"read -p "加入购物车" isum=$(($sum+$i))read -p "是否结束加入购物车" kif [[ $k == yes ]]thenecho "完成加入购物车"echo "$sum"breakfi
doneread -p "是否购买yes/no" jif [[ $j == yes ]]thenecho "$sum"echo "是否继续逛下一家"elseecho "是否继续逛下一家"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.sha=1
for ((day=1;day<10;day++))
doa=$(((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.mzph.cn/diannao/27077.shtml

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

相关文章

深入解析 Spring Cloud Seata:分布式事务的全面指南

&#x1f9e8;&#x1f9e8;&#x1f9e8;深入解析 Spring Cloud Seata&#xff1a;分布式事务的全面指南 在微服务架构中&#xff0c;分布式事务的处理是一项复杂而重要的任务。Spring Cloud Seata 是一款专为分布式事务而设计的解决方案&#xff0c;它由阿里巴巴开源&#x…

宏电“灌区哨兵”助力灌区信息化建设,开启灌区“智水”时代

灌区是保障国家粮食安全的重要水利设施。“十四五”提出&#xff0c;要推进大中型灌区节水改造和精细化管理。灌区信息化是建设智慧水利、深化行业监管、提升灌区科学管理水平的基础支撑&#xff0c;也是“十四五”期间灌区现代化改造的重点内容之一。 宏电智慧灌区信息化解决方…

2024脑卒中评估量表分享

常笑医学整理了5个常用的脑卒中评估量表&#xff0c;供临床医护工作人员参考。 Essen脑卒中风险评分量表-常笑医学网​ &#xff08;完整量表请点击量表名称查看&#xff09; Essen脑卒中风险评估量表&#xff0c;是一个简便、易于临床操作的9分量表&#xff0c;是根据氯吡格雷…

k8s nginx.conf配置文件配置

无状态nginx配置nginx.conf覆盖容器配置nginx.conf 代码&#xff1a;events {worker_connections 1024; }http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main $remote_addr - $remote_user [$time_local] "$request&q…

reGeorg隐秘隧道搭建

reGeorg隐秘隧道搭建 【实验目的】 通过学习reGeorg与Proxifier工具使用&#xff0c;实现外网攻击端连接内网主机远程桌面。 【知识点】 python、reGeorg、proxifier。 【实验原理】 在内网渗透中&#xff0c;由于防火墙的存在&#xff0c;导致无法对内网直接发起连接&#xff…

Linux多线程编程中的同步与互斥

文章目录 一、线程同步与互斥1、理解线程同步2、互斥的概念3、小结 二、互斥锁&#xff08;Mutex&#xff09;1、互斥锁的定义和作用2、pthread库中的互斥锁3、互斥锁的实现原理4、示例代码演示互斥锁的基本用法 三、条件变量&#xff08;Condition Variable&#xff09;1、条件…

IDEA 配置方法模板无法获取到参数值和返回值(methodParameters()、methodReturnType()获取不到值)

问题现象&#xff1a; 我在 review 同事代码时候&#xff0c;发现方法上有注释&#xff0c;但是注释上又没有方法参数和返回值&#xff0c;这不是IDEA 配置了方法模板就可以自动生成的嘛&#xff0c;我出于好奇去问了下该同事是怎么回事&#xff0c;该同事有点不好意思的说我配…

昂辉科技EasySAR-BootLoader上位机产品

近年来&#xff0c;硬件标准化、同质化和软件差异化、复杂化成为了汽车产品研发的重要趋势。与此同时&#xff0c;大量的智能化功能和快速上车的节奏&#xff0c;对软件开发提出了更高的要求。在软硬件解耦的大背景下&#xff0c;建立统一的软件体系和开发工具以紧跟硬件更新迭…

【NOI-题解】1389 - 数据分析1750 - 有0的数1457 - 子数整除1121 - “倒”数1962. 数值计算

文章目录 一、前言二、问题问题&#xff1a;1389 - 数据分析问题&#xff1a;1750 - 有0的数问题&#xff1a;1457 - 子数整除问题&#xff1a;1121 - “倒”数问题&#xff1a;1962. 数值计算 三、感谢 一、前言 本章节主要对循环中带余除法部分题目进行讲解&#xff0c;包括…

python数据分析-北京市二手住宅市场价格波动分析

一、研究背景&#xff1a; 北京市作为中国的首都和经济中心&#xff0c;房地产市场一直备受关注。二手住宅市场是房地产市场的重要组成部分&#xff0c;其价格波动不仅影响着购房者和卖房者的利益&#xff0c;也对整个经济社会的稳定和发展产生重要影响。因此&#xff0c;对北…

idea 配置文件中文乱码

再进行springboot项目开发时发现新建的配置文件中文注释乱码&#xff0c;如下: 处理办法: 1、打开idea&#xff0c;在 File 中找到 Settings,如下图 2、搜索 encodings 找到 File Encodings&#xff0c;如下图 3、将上图中圈上的地方全部改为 UTF-8 编码最后点击 Apply 应用即…

大数据同步方案怎么选,才能提高企业的业务效率?

大数据同步通常指的是在多个数据源或存储系统之间同步数据的过程&#xff0c;可以确保数据的一致性&#xff0c;提高数据的可用性和可靠性&#xff0c;同时支持数据分析和决策制定。 大数据同步的步骤通常包括&#xff1a; 数据识别&#xff1a;确定需要同步的数据类型和范围&…

爬虫-模拟登陆博客

import requests from bs4 import BeautifulSoupheaders {user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36 } # 登录参数 login_data {log: codetime,pwd: shanbay520,wp-submit: …

eBay测评,自养号应该如何做?

测评自养号就是自己搭建国外的服务器和IP环境&#xff0c;实现自己注册eBay的买家账号&#xff0c;通过电脑端环境一台电脑就可以无限养号&#xff0c;一次可以开十几个窗口同时浏览下单&#xff0c;每个窗口都是独立的环境&#xff0c;一账号一环境一IP一卡 买家账号掌握在卖…

酷开科技丨酷开系统智慧中心,解锁AI智能家居生活的无限可能

想象一下&#xff0c;未来的AI电视不再是冷冰冰的机器&#xff0c;而是家庭的智能伙伴。它学习你的喜好&#xff0c;预测你的需求&#xff0c;用声音和触感与你交流。它控制家中的灯光、温度&#xff0c;甚至帮你订购生活用品。 在探索智能家居的未来发展时&#xff0c;酷开系…

Day01 数据结构概述

目录 一、数据结构概述 1、基本概念 2、数据结构 3、逻辑关系&#xff08;线性结构&非线性结构&#xff09; 4、物理结构&#xff08;存储结构&#xff09; 5、算法 6、算法特征 二、时空复杂度 1、时间复杂度 2、空间复杂度 3、结构类型 一、数据结构概述 1、…

FullCalendar日历组件集成实战(12)

背景 有一些应用系统或应用功能&#xff0c;如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件&#xff0c;但功能比较简单&#xff0c;用来做数据展现勉强可用。但如果需要进行复杂的数据展示&#xff0c;以及互动操作如通过点击添加事件&#xff0…

记Windows环境下JDK安装配置

写在文章开头 这是笔者非常早期接触Java时写的文章&#xff0c;为方便每次系统重装时能够快速完成JDK解压版安装配置遂用此文记录了一下整个过程。 Hi&#xff0c;我是 sharkChili &#xff0c;是个不断在硬核技术上作死的 java coder &#xff0c;是 CSDN的博客专家 &#x…

springboot和mybatis项目学习

#项目整体样貌 ##bean package com.example.demo.bean;public class informationBean {private int id;private String name;private String password;private String attchfile;public int getId() {return id;}public String getName() {return name;}public String getPas…

基于Java技术的ERP管理系统:企业资源规划的先进解决方案

在当前数字化转型的趋势下&#xff0c;企业对于高效、稳定且具备扩展性的管理系统的需求日益增加。为了满足这一需求&#xff0c;我们开发了一款基于Java技术的鸿鹄ERP&#xff08;企业资源规划&#xff09;管理系统。该系统采用了Spring Cloud Alibaba、Spring Boot、MybatisP…