【Shell脚本】Shell编程之循环语句

目录

一.循环语句

1.for语句的结构

1.1.格式

1.2.实操案例

案例1.

案例2.

案例3.

案例4.

2.while语句的结构

2.1.格式

2.2.实操案例

案例1.

案例2.

案例3.

案例4.

3.until循环命令

3.1.格式

3.2.实操案例

案例1.

二.补充

1.常用转义符


一.循环语句

1.for语句的结构

  • 读取不同的变量值,用来逐个执行同一组命令

1.1.格式

第一种for 变量  in  取值列表for i in  $(seq 1 10)
do命令序列....
done第二种for ((变量=初始值; 变量范围; 变量的迭代方式))for ((i=1; i<=10; i++))
do命令序列....
donefor                             循环实现多线程for ((i=1; i<=10; i++))
do{命令序列....}&                            将每次循环的进程都放入后台自行运行
done
wait                            等待上面所有循环的进程都执行完毕后再执行后面的命令

1.2.实操案例

案例1.

批量添加用户

  • 用户名存放在users.txt文件中,每行一个初
  • 始密码均设为123456
  • 验证脚本

案例2.

计算从1到100所有整数的和

#!/bin/bash
#计算从1到100所有整数的和sum=0
for i in {1..100};
dosum=$(($i+$sum))
doneecho "$sum"

[root@localhost ~]# vim demo1.sh
[root@localhost ~]# chmod +x demo1.sh
[root@localhost ~]# ./demo1.sh
5050

案例3.

提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

#!/bin/bash
#输入一个小于100的整数,并计算从1到该数之间所有整数的和read -p "请输入一个小于100的整数: " num
if [ $num -eq 1 ];
thenecho "和等于: $num"
sum=0
elif [ $num -gt 1 ]&& [ $num -lt 100 ];
thenfor ((i=l;i<=$num; i++))
do  let sum=$sum+$idoneecho "1到$num的和为$sum"
elseecho "输入错误"
fi

[root@localhost ~]# vim demo2.sh 
[root@localhost ~]# chmod +x demo2.sh
[root@localhost ~]# ./demo2.sh
请输入一个小于100的整数: 45
1到45的和为1035
[root@localhost ~]# ./demo2.sh
请输入一个小于100的整数: 1
和等于: 1
[root@localhost ~]# ./demo2.sh
请输入一个小于100的整数: 86
1到86的和为3741

案例4.

使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数

#!/bin/bash
#使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数read -p "麻溜的给我输入一个0-255之间的数: " numfor i in {1..8}
do a=$[num % 2]$alet num=$[num / 2]
doneecho $a

[root@localhost ~]# vim demo3.sh
[root@localhost ~]# chmod +x demo3.sh
[root@localhost ~]# ./demo3.sh
麻溜的给我输入一个0-255之间的数: 25
00011001
[root@localhost ~]# ./demo3.sh 
麻溜的给我输入一个0-255之间的数: 254
11111110
[root@localhost ~]# ./demo3.sh 
麻溜的给我输入一个0-255之间的数: 215
11010111

2.while语句的结构

  • 重复测试某个条件,只要条件成立则反复执行(相反于until)

2.1.格式

while [ 判断 ]                     条件成立时才会循环执行do里面的命令序列
do命令序列
let i++                            类似的语句
done

2.2.实操案例

案例1.

计算从1到100所有整数的和

#!/bin/bash
#计算从1到100所有整数的和sum=0
i=0while [ $i -le 100 ]
dosum=$[ $sum + $i ]i=$[ i + 1 ]
doneecho "1-100所有整数的和为;" $sum

[root@localhost ~]# vim demo1.sh
[root@localhost ~]# bash demo1.sh
1-100所有整数的和为; 5050

案例2.

提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

#!/bin/bash
#提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和sum=0
i=1read -p "麻溜的给我输入一个0-100的整数: " numif [ $num -le 100 ];thenwhile [ $i -le $num ]dosum=$[ sum + i ]i=$[ i + 1 ]doneecho "1-$num的和为: $sum"elseecho "完蛋玩意,要输入小于100的整数"fi

[root@localhost ~]# vim demo2.sh
[root@localhost ~]# bash demo2.sh
麻溜的给我输入一个0-100的整数: 25
1-25的和为: 325
[root@localhost ~]# bash demo2.sh
麻溜的给我输入一个0-100的整数: 88
1-88的和为: 3916

案例3.

求从1到100所有整数的偶数和、奇数数

#!/bin/bash
#求从1到100所有整数的偶数和、奇数数sum1=0
sum2=0
i=0while [ $i -le 100 ]
doa=$[ i % 2 ]if [ $a -eq 0 ];thensum1=$[ sum1 + i ]elsesum2=$[ sum2 + i ]filet i++
done
echo "1到100的偶数和为$sum1"
echo "1到100的奇数和为$sum2"

[root@localhost ~]# vim demo3.sh
[root@localhost ~]# bash demo3.sh
1到100的偶数和为2550
1到100的奇数和为2500

案例4.

用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连>续输错

3次则报警

#!/bin/bash
#用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警
i=1
while [ $i -le 3 ]doread -p "请输入密码:" passwdif [ "$passwd" == "123456" ];thenecho "密码正确"exit 0elseecho "密码错误"filet i++done
echo "警告,密码已输错三次"

[root@localhost ~]# vim demo6.sh
[root@localhost ~]# bash demo6.sh
请输入密码:52
密码错误
请输入密码:52 
密码错误
请输入密码:546
密码错误
警告,密码已输错三次
[root@localhost ~]# bash demo6.sh
请输入密码:123456
密码正确

3.until循环命令

  • 重复测试某个条件,只要条件不成立则反复执行(相反于while)

3.1.格式

until [ 条件表达式 ]                    条件不成立时才会循环执行do里面的命令序列
do命令序列
....变量的迭代方式
done

3.2.实操案例

案例1.

用until循环求1到100的和

#!/bin/bash
#用until循环求1到100的和sum=0
i=0until [ $i -gt 100 ]
dosum=$[sum+i]let i++
done
echo "输出1到100的和:$sum"

[root@localhost ~]# vim demo11.sh
[root@localhost ~]# bash demo11.sh
输出1到100的和:5050

二.补充

1.常用转义符

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

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

相关文章

从零入门激光SLAM(十三)——LeGo-LOAM源码超详细解析4

大家好呀&#xff0c;我是一个SLAM方向的在读博士&#xff0c;深知SLAM学习过程一路走来的坎坷&#xff0c;也十分感谢各位大佬的优质文章和源码。随着知识的越来越多&#xff0c;越来越细&#xff0c;我准备整理一个自己的激光SLAM学习笔记专栏&#xff0c;从0带大家快速上手激…

RAG 场景对Milvus Cloud向量数据库的需求

虽然向量数据库成为了检索的重要方式,但随着 RAG 应用的深入以及人们对高质量回答的需求,检索引擎依旧面临着诸多挑战。这里以一个最基础的 RAG 构建流程为例:检索器的组成包括了语料的预处理如切分、数据清洗、embedding 入库等,然后是索引的构建和管理,最后是通过 vecto…

网络编程--tcp三次握手四次挥手

1、三次握手 &#xff08;1&#xff09;三次握手的详述 首先Client端发送连接请求报文&#xff0c;Server段接受连接后回复ACK报文&#xff0c;并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文&#xff0c;并分配资源&#xff0c;这样TCP连接就建立了。…

【计算机毕业设计】springboot海洋馆预约系统的设计与实现

海洋馆预约系统采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的java进行编写&#xff0c;使用了 springboot框架。该系统从两个对象&#xff1a;由管理员和用户来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;对用户、门票信息、…

好景盒式磁带随声听

少年时代柜子里翻出来的磁带录音机电路板 两颗芯片&#xff0c;FM芯片&#xff0c;电机驱动 CD9088CBD6650

仿“今日头条”新闻系统源码

伴随着移动互联网的热潮和自媒体时代的到来&#xff0c;因此我们看到了以“今日头条、抖音、快手、小红书”等为代表的自媒体平台的崛起。这种新的信息传播方式给广大用户带来获取资讯的便利&#xff0c;也给每个人的思想和生活带来了潜移默化的影响。随着时代发展和进步&#…

【记录】常见的前端设计系统(Design System)

解释一下设计系统的定义&#xff0c;以及在国内&#xff0c;都有那些优秀的设计系统可以学习&#xff0c;希望可以帮到大家。 什么是设计系统&#xff08;Design System)&#xff1f; 设计系统&#xff08;Design System&#xff09;是一套综合性的指导原则、组件和规则&…

C补充1—1章1.0—C程序语言设计(许宝文,李志)

二手书到了&#xff0c;好消息&#xff0c;前主人看的很认真&#xff0c;坏消息&#xff0c;只看到这页了 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊最后几题好难啊啊啊啊啊&#xff0c;再议 目录 1.1 入门 1.2 变量与算数表达式 练习1-3 //打印温度对照表 练习1-4 //摄氏-华氏温…

Linux(CentOS7)离线使用安装盘部署Telnet

[在线工具网 - 各类免费AI工具合集&#xff0c;免费pdf转word等](https://www.orcc.online) https://orcc.online 挂载镜像CentOS-7-x86_64-DVD-1810.iso到/mnt下&#xff08;其他位置也行&#xff09;&#xff0c;命令如下&#xff1a; mount /dev/sr0 /mnt 安装包默认在Pa…

设置LCD为第二终端

我一直使用xshell端&#xff0c;开发板通过串口和 xshell进行通信。 调试好LCD 驱动之后&#xff0c;可以设置 LCD 作为终端&#xff0c;也就是开发板使用自己的显示 设备作为自己的终端&#xff0c;然后接上键盘就可以直接在开发板上敲命令了&#xff0c;将 LCD 设置为终端控制…

商场活动策划有哪些套路?

商场活动策划的套路很简单就是在各种各样的特定的时间节点上&#xff0c;针对商场的目标市场进行有针对性的营销活动。 这些活动套路一共也就不超过以下20个&#xff0c;掌握了就不会再怕没活动做了&#xff0c;下面何策网给你详细讲讲&#xff1a; 1.节假日促销&#xff1a;…

如何使用Whisper音频合成模型

Whisper 是一个通用语音识别模型&#xff0c;由 OpenAI 开发。它可以识别多种语言的语音&#xff0c;并将其转换为文本。Whisper 模型采用了深度学习技术&#xff0c;具有高准确性和鲁棒性。 1、技术原理及架构 Whisper 的工作原理&#xff1a;音频被分割成 30 秒的片段&#…

R语言数据探索与分析-运用时间序列预测模型对成都市API进行预测分析

一、研究背景 “绿水青山就是金山银山&#xff0c;要让绿水青山变成金山银山”让人们深刻的意识到环境的重要性。与此同时&#xff0c;由于现代生活水平的不断提高&#xff0c;所带来的环境污染也不断增多&#xff0c;空气以及环境的污染带来了越来越多的疾病&#xff0c;深刻…

分享四种免费获取SSL的方式

SSL证书目前需要部署安装的网站很多&#xff0c;主要还是基于国内目前对证书的需求度在不断的升高&#xff0c;网站多了、服务器多了之后。网络安全问题就成为了大家不得不面对的一个重要的问题了。SSL证书的作用有很多&#xff0c;这里就不一一详述了&#xff0c;本期作品主要…

华为 Huawei 交换机 配置 Dot1q 终结子接口实现同设备 VLAN 间通信示例

组网需求 企业的不同部门拥有相同的业务&#xff0c;如上网、 VoIP 等业务&#xff0c;且各个部门中的用户位于不同的网段。目前存在不同的部门中相同的业务所属的VLAN 不相同&#xff0c;现需要实现不同VLAN中的用户相互通信。 如 图 7-7 所示&#xff0c;部门 1 和部门 2 中…

SQL——高级教程【菜鸟教程】

SQL连接 左连接&#xff1a;SQL LEFT JOIN 关键字 左表相当于主表&#xff0c;不管与右表匹不匹配都会显示所有数据 右表就只会显示和左表匹配的内容。 //例显示&#xff1a;左表的name&#xff0c;有表的总数&#xff0c;时间 SELECT Websites.name, access_log.count, acc…

yum方式删除openjdk17和openjdk18

在用虚拟机安装jdk之前其他的教程中经常会有让你java -version查看是否有安装过的jdk 我相信很多新手小白和我一样经常会遇到查出来有openjdk17和openjdk18的情况 所以这个应该怎么卸载呢,看我来操作 我用的是基于centos7的linux虚拟机 我选择用yum卸载openjdk 查看已安装…

ComfyUI中图像亮度/对比度/饱和度处理

用上面这个节点可以同时设置图片的亮度、对比度和饱和度。 【保姆级教程】一口气分享在ComfyUI中常用的30多种基本图像处理方式 更多好玩且实用AIGC工作流和节点 星球号&#xff1a;32767063 本期资料链接 往期学习资料 整理AI学习资料库

springboot lua检查redis库存

需求 最近需求需要实现检查多个马戏场次下的座位等席对应库存渠道的库存余量&#xff0c;考虑到性能&#xff0c;决定采用Lua脚本实现库存检查。 数据结构 库存层级结构 redis库存hash类型结构 实现 lua脚本 --- 字符串分割为数组 local function split(str, char)local…

【强训笔记】day17

NO.1 思路&#xff1a;用一个字符串实现&#xff0c;stoi函数可以转化为数字并且去除前导0。 代码实现&#xff1a; #include <iostream> #include<string> using namespace std;string s;int main() {cin>>s;for(int i0;i<s.size();i){if(s[i]%20) s[…