【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.hqwc.cn/news/692075.html

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

相关文章

苹果电脑MAC清理系统空间工具CleanMyMacX4.15.3中文版下载

苹果电脑以其出色的性能、优雅的设计和高效的操作系统而受到许多用户的喜爱。然而&#xff0c;随着时间的推移和使用量的增加&#xff0c;你可能会发现你的Mac开始变得缓慢和响应迟缓。这通常是因为硬盘空间被大量占用&#xff0c;影响了系统的整体性能。幸运的是&#xff0c;有…

线性集合:ArrayList,LinkedList,Vector/Stack

共同点&#xff1a;都是线性集合 ArrayList ArrayList 底层是基于数组实现的&#xff0c;并且实现了动态扩容&#xff08;当需要添加新元素时&#xff0c;如果 elementData 数组已满&#xff0c;则会自动扩容&#xff0c;新的容量将是原来的 1.5 倍&#xff09;&#xff0c;来…

day11-IO流

IO流 1 IO流的概述和分类 1.1学习IO流的目的&#xff1f; 1&#xff0c;将数据写到文件中&#xff0c;实现数据永久化存储 2&#xff0c;读取文件中已经存在的数据 1.2 IO流概述 其中&#xff1a;I表示intput&#xff0c;是数据从硬盘进内存的过程&#xff0c;称之为读。…

1905. 统计子岛屿

1905. 统计子岛屿 java&#xff1a;DFS class Solution {Boolean flag true;private void dfs(int x, int y, int m, int n, int[][] grid1, int[][] grid2) {if (x < 0 || x > m || y < 0 || y > n || grid2[x][y] ! 1) { // 包含关系&#xff1a;遍历最小范围…

Electron学习笔记(六)

文章目录 相关笔记笔记说明 七、系统5、托盘图标(1)、设置托盘图标(2)、托盘图标闪烁(3)、托盘图标菜单 6、剪切板(1)、写入剪切板(2)、读取剪切板 7、系统通知8、其他(1)、使用系统默认应用打开文件(2)、接收拖拽到窗口中的文件(3)、使用系统字体 相关笔记 Electron学习笔记&…

批量文本高效编辑神器:轻松拆分每行内容,一键保存更高效!轻松实现批量拆分与保存

文本处理成为我们日常工作中的一项重要任务。然而&#xff0c;面对大量的文本内容&#xff0c;传统的逐行编辑方式往往显得繁琐且效率低下。那么&#xff0c;有没有一种更高效、更便捷的解决方案呢&#xff1f;答案是肯定的——批量文本高效编辑神器&#xff0c;让您的文本处理…

商场学习之微服务

前言 寒假前在新电脑上配置了java环境&#xff0c;maven仓库&#xff0c;node,js&#xff0c;navicat&#xff0c;MySQL&#xff0c;linux&#xff0c;vmware等环境&#xff0c;创建了6个mysql数据库&#xff0c;77张表。 如此多的表&#xff0c;字段&#xff0c;去手写基础…

vue3vue3vue3vue3vue3vue3vue3vue3vue3vue3vue3vue3

纯vue3的语法 一.创建&#xff08;基于vite&#xff09; 1.在指定目录下运行 npm create vuelatest 项目名称&#xff1a;英文小写下划线数字回车表示确定是、否 左右切换路由、pina、单元测试、端到端的测试、开启eslint控制代码质量 先选择no&#xff0c;学的时候自己手动…

数列排序C++

题目&#xff1a; 思路&#xff1a; 创建一个数组a&#xff0c;循环遍历输入&#xff0c;然后使用函数sort进行上升排序&#xff0c;最后循环遍历输出a[i]. #include <bits/stdc.h> using namespace std; int main(){int a[201];int n;cin>>n;//输入for(int i0;i&l…

[数据结构]动画详解单链表

&#x1f496;&#x1f496;&#x1f496;欢迎来到我的博客&#xff0c;我是anmory&#x1f496;&#x1f496;&#x1f496; 又和大家见面了 欢迎来到动画详解数据结构系列 用通俗易懂的动画的动画使数据结构可视化 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读 如何低…

性能远超GPT-4!谷歌发布Med-Gemini医疗模型;李飞飞首次创业瞄准空间智能;疫苗巨头联合OpenAl助力AI医疗...

AI for Science 企业动态速览—— * 谷歌 Med-Gemini 医疗 AI 模型性能远超 GPT-4 * 斯坦福李飞飞首次创业瞄准「空间智能」 * 疫苗巨头 Moderna 与 OpenAl 达成合作 * 美国能源部推动 AI 在清洁能源领域的应用 * 美年健康荣获「2024福布斯中国人工智能创新场景应用企业TOP10」…

【计算机毕业设计】基于微信小程序的校园综合服务

随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;校园综合服务被用户普遍使用&#xff0c;为方便用户能够可以随时…