【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;它扮演着至关重要的…

docker运行镜像、docker删除镜像、docker运行容器、docker退出当前容器、docker关闭容器、docker重新回到后台运行的容器命令

docker查看镜像&#xff1a; docker images docker删除镜像&#xff1a; docker rmi IMAGE_NAME:TAG docker运行镜像并进入容器&#xff1a; docker run -it REPOSITORY:TAG /bin/bash docker临时退出当前容器&#xff08;并不关闭容器&#xff0c;容器仍在后台运行&#x…

nacos与spring cloud gateway 一起的使用的时候uri: lb://server-name配置不起用

首先我们将uri配置成本地地址测试服务是否可以调通 spring:cloud:nacos:discovery:server-addr: xxx.xxx.xxx.xxx:8848gateway:routes:- id: angular_appuri: http://localhost:8082predicates:- Path/angular/**filters:- StripPrefix1xxx.xxx.xxx.xxx:8848 切换成你的nacos服…

创新指南 | 生成式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; 创建一个名为…

基于springboot的校园资料分享平台源码数据库

基于springboot的校园资料分享平台源码数据库 随着信息互联网购物的飞速发展&#xff0c;国内放开了自媒体的政策&#xff0c;一般企业都开始开发属于自己内容分发平台的网站。本文介绍了校园资料分享平台的开发全过程。通过分析企业对于校园资料分享平台的需求&#xff0c;创…

java容器类和c++中容器类

java中的容器类和C++中的容器类都是用来存储和操作一组元素的数据结构,但它们有一些不同之处。 Java中的容器类: Java标准库提供了丰富的容器类,主要位于java.util包中,包括但不限于以下几种: ArrayList:动态数组,类似于C++中的std::vector,可动态调整大小。LinkedLi…

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;并且…

Vue3实战笔记(15)—pinia基本用法--State

文章目录 前言一、pinia的state二、修改数据的几种方法&#xff1a;1.直接修改2.批量修改3.重置 state4.替换 state 三 补充知识总结 前言 接上文&#xff0c;在大多数情况下&#xff0c;state 都是你的 store 的核心。人们通常会先定义能代表他们 APP 的 state。在 Pinia 中&…

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;多媒…

【linux】隐藏文件,vim 或 gedit 打开隐藏文件

用la查看隐藏文件 la 用ls查看正常文件 ls隐藏文件在Linux和其他类UNIX系统中以.开头命名&#xff0c;它们通常用于存储用户或系统的配置信息、缓存数据或其他不想让用户直接看到的文件。以下是您提到的一些隐藏文件及其典型用途&#xff1a; .bashrc: 这是Bourne Again SHe…