应该是你见过最详细的shell编程循环语句解析了(for循环、while循环、until循环)(一)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 应该是你见过最详细的shell编程循环语句解析了(for循环、while循环、until循环)(一)

目录



前言


一、循环语句


1.1 for循环


1.2 while循环


示例1:批量添加用户


示例2:猜价格游戏


示例3:查看文件内容


1.3 until循环


示例1:计算1~50的和


二、多线程


三、分隔符


举例:读取文件,但是文件中有空格


举例:将五个环境分行输出


四、双循环


五、退出循环


5.1 exit


5.2 break


5.3 continue


5.4 死循环


六、总结


前言



本篇博客整理归类shell循环语句的相关知识点,单层循环以及双层循环的逻辑到底是什么样的?


另外本人写这篇博客的途中发现的Xshell的正确使用方式,将不透明度调低以后,可以透过窗口看到我美丽的桌面壁纸,就像是给Xshell增加了一个背景图片一样,我真是i了!!!


image.png

92cb082157dc410689540b07a72a2e88.png


一、循环语句



1.1 for循环


for循环的知识点提前单独写了一篇博客,这里就不再赘述了,大家自行查阅


shell编程for循环语句原来如此


1.2 while循环


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


相对于for,需要知道循环次数;我们只知道停止条件,不知道次数,就需要使用while,直到达到条件


while [条件表达式]
do
.....
done

image.png

image.png


示例1:批量添加用户


用户名称以stu开头,按数字顺序进行编号

一共添加20个用户,即stu1、stu2......

初始密码均为000000

#!/bin/bash
#批量添加用户
i=1
while [ $i -le 20 ]
do
        useradd stu$i
        echo "000000" |passwd --stdin stu$i &>/dev/null
        let i++
#一定要有变量迭代的过程
done

image.png

image.png

da6a0d696c674cbbb3993df6e8e8d280.png


示例2:猜价格游戏


通过变量RANDOM获得随机数

提示用户猜测并记录次数,猜中后退出循环

#!/bin/bash
#猜价格游戏
res=$[RANDOM % 100]
a=0
while [ $a -eq 0 ]
#永远为真
do
        read -p "请输入你猜的价格(0-99):" price
        if [ $price -eq $res ]
        then
                echo "恭喜你猜对了!"
                let b++
                let a++
#a++代表正确后退出循环
#b++用来统计猜的次数
        elif [ $price -lt $res ]
        then
                echo "猜低了,继续猜"
                let b++
        elif [ $price -gt $res ]
        then
                echo "猜高了,继续猜"
                let b++
        fi
done
echo "你一共猜了$b 次"
#也可以将b++放在read -p下面

image.png

image.png


示例3:查看文件内容


法一:


#!/bin/bash
#查看文件内容
while read line
#read结合后面的重定向,模拟用户输入
#line是变量名,名字不唯一
do
        echo $line
#打印这个变量
done < test.txt
#文件重定向给循环


法二:


#!/bin/bash
cat test.txt |while read line
#使用管道符将查看到的文件利用read导入给while循环
#read结合后面的重定向,模拟用户输入
#line是变量名,名字不唯一
do
        echo $line
#打印这个变量
done


1.3 until循环


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


基本上while能干的事情,until也能干


until [条件表达式]
do
.....
done

image.png

image.png


示例1:计算1~50的和


#!/bin/bash
#求50以内的和
a=0
sum=0
#给定初值
until [ $a -gt 50 ]
#大于50为假
do
        sum=$[sum + a]
        let a++
#得出值,并迭代
done
        echo "50以内的和: $sum "

image.png

image.png


二、多线程



for循环一般在正常执行的时候一个进程串行执行的取值列表的,如果脚本内容很多,效率低下,我们可以通过多线程并行处理提高效率


#!/bin/bash
#多线程
for ip in 192.168.109.{1..254}
do
        {
        ping -c 3 -i 0.5 -w 2 $ip &>/dev/null
        if [ $? -eq 0 ]
        then
                echo "$ip is online">>/opt/host_online.txt
        else
                echo "$ip is offline">>/opt/host_offline.txt
        fi
        }&
#增加&符号(前面将代码用括号括起来),代表将进程放到后台处理,后台命令之间不区分先后关系
done
wait
#wait的作用是等待上面所有后台进程都执行完毕后才会去执行后面的语句。
#如果不用wait,后面的语句不会等待后台进程,会造成需要有上下文依赖关系
#的程序执行错误
cat /opt/host_online.txt
cat /opt/host_offline.txt

image.png

目录
相关文章
|
3月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
4月前
|
Java 测试技术 数据安全/隐私保护
📖Java零基础-while循环语句的深度解析
【10月更文挑战第6天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
83 1
|
4月前
|
Shell
Shell编程(下)
Shell编程(下)
123 1
|
4月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
65 1
|
4月前
|
Shell Linux 开发工具
|
4月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
102 12
|
3月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
130 2
|
2月前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是"将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为5种:单例模式、工厂方法模式抽象工厂式、原型模式、建造者模式。
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
2月前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
2月前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析

热门文章

最新文章

推荐镜像

更多