【Shell】shell编程之循环语句

目录

1.for循环

例题

2.while循环

例题

3.until循环

1.for循环

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

for 变量 in 取值列表

do

        命令序列

done

[root@localhost ~]# for i in 1 2 3
> do
> echo "第 $i 次跳舞"
> done
第 1 次跳舞
第 2 次跳舞
第 3 次跳舞
[root@localhost ~]#[root@localhost ~]# for i in {1..3}
> do
> echo $i
> done
1
2
3
[root@localhost ~]#

for (变量-初始值;变量范围;变量的迭代方式)

do

        命令序列

done

[root@localhost ~]# for ((i=1;i<=10;i++))
> do
> echo $i
> done
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# echo $i
11
[root@localhost ~]#

例题

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

#!/bin/bash
#计算从1到100所有整数的和
sum=0
for ((i=1;i<=100;i++))
{sum=$[ sum + $i ]
}
echo "1到100的和为 $sum"

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

#!/bin/bash
#提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和# 提示用户输入一个小于100的整数
read -p "请输入一个小于100的整数:" number# 初始化求和变量为0
sum=0# 使用for循环计算从1到用户输入数字的整数和
for (( i=1; i<=$number; i++ )); dosum=$((sum + i))
done# 输出结果
echo "从1到 $number 的所有整数的和为:$sum"

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

#!/bin/bash  
#求从1到100所有整数的偶数和、奇数和# 初始化偶数和奇数的和为0  
sum_even=0  
sum_odd=0# 使用for循环遍历从1到100的所有整数
for i in {1..100}  
do  # 检查当前数字是偶数还是奇数  if (( $i % 2 == 0 )); then  # 如果是偶数,则加到偶数和上  sum_even=$((sum_even + i))  else  # 如果是奇数,则加到奇数和上  sum_odd=$((sum_odd + i))  fi  
done  # 输出结果  
echo "从1到100的所有整数的偶数和为:$sum_even"  
echo "从1到100的所有整数的奇数和为:$sum_odd"

4、检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中

#!/bin/bash
#检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中for num in {0..255}
do{hostip="192.168.10.$num"ping -c 4 -i 0.5 -W 2 $hostip &> /dev/nullif [ $? -eq 0 ];thenecho "$hostip is online" >> /root/host_ipfi}&
done
wait
cat /root/host_ip

5、用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警

#!/bin/bash
#用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警for i in {1..3}
doread -p "请输入密码" passwdif [ "$passwd" == "123456" ];thenecho "密码正确"exitelseecho "密码错误"fi
doneecho  "报警"

6、编写能够自动生成一个6位随机密码的脚本

#!/bin/bash
#编写能够自动生成一个6位随机密码的脚本STR="0123456789qwertyuiopasdfghjklzxcvbnm"for ((i=1;i<=6;i++))
donum=$[RANDOM % ${#STR}]passwd=${STR:num:1}password+=$passwd
doneecho "6位随机密码为 $password"

2.while循环

重复测试某个条件,只要条件成立则反复执行

[root@localhost ~]# a=1
[root@localhost ~]# while [ $a -le 10 ]
> do
> echo $a
> let a++
> done
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]#

例题

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

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

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

#!/bin/bash
#提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和a=1
sum=0
read -p "请输入一个小于100的整数:" numif [ $num -ge 1 ] && [ $num -le 100 ];thenwhile [ $a -le $num ]
dolet sum+=alet a++
doneecho "从1到该数之间所有整数的和为:$sum "
elseecho "输入有误!"
fi

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

#!/bin/bash 
#求从1到100所有整数的偶数和、奇数和a=1jisum=0
ousum=0
while [ $a -le 100 ]
dob=$[ a % 2 ]if [ $b -eq 0 ];thenlet ousum+=$aelselet jisum+=$afilet a++
doneecho -e "从1到100的所有整数的偶数和为:$ousum\n 奇数和为:$jisum"  

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 "输错三次,报警"

5、编写能够自动生成一个6位随机密码的脚本

#!/bin/bash
#编写能够自动生成一个6位随机密码的脚本i=0
STR="0123456789qwertyuiopasdfghjklzxcvbnm"while [ $i -lt 6 ]
donum=$[RANDOM % ${#STR}]passwd=${STR:num:1}password+=$passwdlet i++
done
echo "6位随机密码为 $password"

3.until循环

until 语句,它与 while 不同之处在于,是当条件表达式为 false 时才循环,实际使用中比较少 

until [ $i -gt 10 ];doecho $ilet i++sum=$(($sum+$i))
done

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

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

相关文章

Vue3实战笔记(02)--- 使用VUETIFY图标字体

文章目录 前言一、Material Design 图标二、Font Awesome三、混合方式使用总结 前言 Vuetify 开箱即支持 4 种流行的图标字体库—— Material Design Icons&#xff0c;Material Icons&#xff0c;Font Awesome 4 和 Font Awesome 5。今天为项目安装喜欢的图标。 一、Material…

AI虚拟伴侣方案

打造类似Character AI的产品,现成的训练好的模型方案,适合做陪伴型虚拟女友等项目,近期看到的最佳项目: 1、项目背景: (1)项目动机:角色扮演LLM是AI的第二大消费用例,但通常被开源社区忽视。 (2)行业现状:缺乏与https://character.ai/提供的角色扮演LLM相对应的…

msvcp140dll怎么修复,分享5种有效的解决方法

MSVCP140.dll文件丢失这一现象究竟是何缘由&#xff0c;又会引发哪些令人头疼的问题呢&#xff1f;在探索这个问题的答案之前&#xff0c;我们先来深入了解这个神秘的DLL文件。MSVCP140.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;它扮演着至关重要的…

创新指南 | 生成式AI如何引领企业创新未来?

2023年麦肯锡全球数字战略调查了1000多名受访者&#xff0c;发现&#xff1a;建立创新文化的组织与它们应用包括生成式AI在内的最新数字技术提高产出的能力之间有着惊人的强关联。 本文探讨了顶尖创新企业采取的五项行动&#xff0c;使它们与同行之间拉开距离&#xff0c;并在使…

【Go语言初探】(一)、Linux开发环境建立

一、操作系统选择 选择在Windows 11主机上运行的CentOS 7 Linux 虚拟机&#xff0c;虚拟化平台为VMWare Workstation. 二、安装Go语言环境 访问Go语言官网&#xff0c;选择Linux版本下载&#xff1a; 解压&#xff1a; tar -xvf go1.22.3.linux-amd64.tar.gz检验安装结果&…

DE2-115串口通信

目录 一、 内容概要二、 Hello Nios-II2.1 Nios-II编程2.1.1 硬件Ⅰ 搭建环境Ⅱ 编写代码 2.1.2 软件2.1.3 烧录Ⅰ硬件Ⅱ 软件 2.2 verilog编程 三、 心得体会 一、 内容概要 分别用Verilog和Nios软件编程, 实现DE2-115开发板串口输出“Hello Nios-II”字符到笔记本电脑串口助…

C++ list介绍(迭代器失效)

一、常用接口 reverse逆置 sort排序&#xff08;默认升序&#xff09; 仿函数greater<int> merge合并&#xff0c;可以全部合并&#xff0c;也可以一部分合并 unique&#xff1a;去重&#xff08;先排序&#xff0c;再去重&#xff09; remove&#xff1a;删除e值&#…

超详细的胎教级Stable Diffusion使用教程(五)

这套课程分为五节课&#xff0c;会系统性的介绍sd的全部功能和实操案例&#xff0c;让你打下坚实牢靠的基础 一、为什么要学Stable Diffusion&#xff0c;它究竟有多强大&#xff1f; 二、三分钟教你装好Stable Diffusion 三、小白快速上手Stable Diffusion 四、Stable dif…

Linux中每当执行‘mount’命令(或其他命令)时,自动激活执行脚本:输入密码,才可以执行mount

要实现这个功能&#xff0c;可以通过创建一个自定义的mount命令的包装器&#xff08;wrapper&#xff09;来完成。这个包装器脚本会首先提示用户输入密码&#xff0c;如果密码正确&#xff0c;则执行实际的mount命令。以下是创建这样一个包装器的步骤&#xff1a; 创建一个名为…

Elasticsearch入门基础和集群部署

Elasticsearch入门基础和集群部署 简介基础概念索引&#xff08;Index&#xff09;类型&#xff08;Type&#xff09;&#xff08;逐步弃用&#xff09;文档&#xff08;Document&#xff09;字段&#xff08;Field&#xff09;映射&#xff08;Mapping&#xff09;分片&#x…

第十二届蓝桥杯省赛真题 Java A 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 相乘试题 B: 直线试题 C : \mathrm{C}: C: 货物摆放试题 D: 路径试题 E: 回路计数试题 F : \mathrm{F}: F: 最少砝码试题 G: 左孩子右兄弟试题 H : \mathrm{H}: H: 异或数列试题 I \mathbf{I} I 双向排序试题 J : \mathrm{J}: J: 分…

Promise.all和 race

Promise.all() all方法可以完成并行任务&#xff0c; 它接收一个数组&#xff0c;数组的每一项都是一个promise对象。返回值&#xff1a; 成功时&#xff1a;当数组中所有的promise的状态都达到resolved的时候&#xff0c;就返回包含所有 Promise 结果的数组&#xff0c;并且…

Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV

OpenCV是大型的Third party 计算机视觉库&#xff0c;在开发中会经常用到&#xff0c;本篇记录一下 在Ubuntu系统上安装和配置OpenCV&#xff0c;并使用C/C调用OpenCV 关于VS Code配置C/C开发环境的部分&#xff0c;见之前的博文 Linux/Ubuntu系统下使用VS Code配置C/C开发环境…

shell进阶之计算编译前后时间(十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

代码+视频,R言语处理数据中的缺失值

在SCI论文中&#xff0c;我们不可避免和缺失数据打交道&#xff0c;特别是在回顾性研究&#xff0c;对于缺失的协变量&#xff08;就是混杂因素&#xff09;&#xff0c;我们可以使用插补补齐数据&#xff0c;但是对于结局变量和原因变量的缺失&#xff0c;我们不能这么做。部分…

mysql设置远程访问权限,允许其他IP访问

文章目录 更改mysql配置文件登录mysql 更改mysql配置文件 查找.ini或者.cnf文件 更改bind-address为0.0.0.0 [mysqld] character-set-serverutf8mb4 bind-address0.0.0.0 default-storage-engineINNODB [mysql] default-character-setutf8mb4 [client] default-character-s…

数据分析思维——数据埋点笔记,以电商为例

数据埋点 数据分析前提是有数据&#xff0c;数据从哪里来&#xff0c;要选择采集哪些数据都需要考虑。如某些app上的商品推荐&#xff0c;是基于哪些信息来预判的呢&#xff1f;因此作为数据分析师有必要系统的了解用户行为到用户数据的整个过程 何为数据埋点 每当用户在客户端…

【GlobalMapper精品教程】079:投影坐标系转地理坐标系(UTM转WGS1984/2000)

文章目录 一、矢量UTM转WGS1984/20001. UTM转WGS19842. UTM转CGCS2000二、栅格UTM转WGS1984/2000一、矢量UTM转WGS1984/2000 加载配套实验数据(data079.rar)中的矢量数据,如下所示: 查看源坐标系:双击图层的,图层投影选项卡,为UTM投影,Zone48N。 设置系统坐标系:点击…

C#【进阶】泛型

1、泛型 文章目录 1、泛型1、泛型是什么2、泛型分类3、泛型类和接口4、泛型方法5、泛型的作用思考 泛型方法判断类型 2、泛型约束1、什么是泛型2、各泛型约束3、约束的组合使用4、多个泛型有约束思考1 泛型实现单例模式思考2 ArrayList泛型实现增删查改 1、泛型是什么 泛型实现…

nowcoder——回文结构

链表的回文结构_牛客题霸_牛客网 (nowcoder.com) 我们来分析该题&#xff1a;我们首先要清楚什么是回文结构&#xff1f;其实就是对称结构。如果一个链表呈对称结构就说明该链表具有回文结构。 下面给上一些例子&#xff1a; 那我们怎么判断该链表是否属于回文结构呢&#xf…