Linux——Shell编程之循环语句(笔记)

Linux shell 脚本 - for循环 例如,要访问“mango”元素,请将 @ 运算符替换为元素在数组中的位置(第一个元素从 0 开始,因此在这种情况下,“mango”将用 2 表示)。注意:有时,需要使用 ./脚本文件.sh 的方式来执行脚本,而不能使用 sh 脚本文件.sh 的方式,否则会报语法错误。注意:此时,需要使用 ./脚本文件.sh 的方式来执行脚本,而不能使用 sh 脚本文件.sh 的方式,否则会报语法错误。在 Bash 脚本中,循环扮演着几乎相同的角色,并用于自动执行重复性任务,就像在编程语言中一样。 阅读详情

For循环语句

1、for语句的结构与逻辑:

    使用for循环语句时,我们需要指定一个变量以及取值列表,针对每个不同的取值重复执行相同的命令序列,直到变量使用完退出循环。结构如下:

for 变量 in 取值列表
    do
        命令序列
    done

    对于for语句的操作对象——用户指定名称的变量,并通过in关键字为该变量预先设置了一个取值列表,多个取值之间以空格进行分隔。然后位于do...done之间的命令序列称为循环体,其中的执行语句需引用变量以完成相应的任务。逻辑图如下:

 2、应用示例:

(1)根据姓名列表批量添加用户
 [root@localhost ~]#vim /root/users.txt    //用于测试的列表文件
zhangsan
lisi
wangwu
 [root@localhost ~]#vim uadd.sh    //批量添加用户的脚本
#!/bin/bash
ULIST=$(cat /root/users.txt)

for UNAME in $ULIST
do
    useradd $UNAME
    echo    "aptech" | passwd --stdin $UNAME &>/dev/null
done
 [root@localhost ~]#chmod +x uaddfor.sh
 [root@localhost ~]#./uaddfor.sh    //测试并确认执行结果
 [root@localhost ~]#tail -3 /etc/passwd
zhangsan:x:... ...    //省略内容
 [root@localhost ~]#vim udelfor.sh    //测试并确认结果
 [root@localhost ~]#id zhangsan
id: zhangsan: no such user    //无此用户
(2)根据IP地址列表检查主机状态
 [root@localhost ~]#vim /root/ipadds.txt    //测试的列表文件
176.16.16.1
192.168.137.1
192.168.137.254
 [root@localhost ~]#vim chkhosts.sh    //循环检查各主机的脚本
#!/bin/bash
HLIST=$(cat /root/ipadd.txt)
    for IP in $ HLIST
do
    ping -c 3 -i 0.2 -W 3 $IP    &> /dev/null
    //-c 发送包的数量;-i 发送ping包间隔;-W 超时时间
if [ $? -eq 0 ]
then
    echo "Host $IP is up."
else
    echo "Host $IP is down."
fi
done
 [root@localhost ~]#chmod +x chkhosts.sh
 [root@localhost ~]#./chkhost.sh    //测试并确认执行结果
Host 172.16.16.1 is down.
Host 192.168.137.1 is down.
Host 192.168.137.254 is up.

While循环语句

1、while语句的结构与逻辑:

    根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止。注意避免出现死循环的情况的情况,否则之后的命令操作将无法进行。结构如下:

while 条件语句操作
do 
    命令序列
done

    使用while循环语句时,有两个特殊的条件测试操作,即true(真)和false(假)。使用true作为条件,条件永远成立,命令序列将无限执行;使用false作为条件,则循环体将不会被执行。这两个特殊条件也可以用在if语句的条件测试中。逻辑图如下:

 2、应用示例:

(1)批量添加规律编号的用户
[root@localhost ~]#vim uadd.sh    //批量添加用户的脚本
#!/bin/bash
PREFIX="lemon"
i=1
while [ $1 -le 20 ]
do
    useradd ${PREFIX}$i
    echo "123456" | passwd --stadin ${PREFIX}$i &> /dev/null
    let i++
done
[root@localhost ~]#chmod +x uadd.sh
[root@localhost ~]#./uadd.sh
[root@localhost ~]#grep "lemon" /etc/passwd | tail -3
lemon11:x:...    ...    //省略部分信息
[root@localhost ~]#vim /udel.sh    //批量删除用户的脚本
#!/bin/bash
PREFIX="lemon"
i=1
while [ $i -le 20 ]
do
    userdel -r ${PREFIX}$i
    let i++
done
[root@localhost ~]#chmod +x udel.sh
[root@localhost ~]#./udel.sh    //测试并确认结果
[root@localhost ~]#id lemon20
id:lemon20:无此用户

Until 循环语句

(1)until语句的结构:

    until与while完全相反,while循环在条件为“真”是继续执行循环,而until则是在条件为假时执行循环。结构如下:

until 条件测试操作
do
    命令序列
done

    until语句首先判断until后的条件测试结果,如果条件不成立,则执行do...done循环体中的命令序列;返回until后再次判断条件测试结果,如果条件仍然不成立,则继续执行循环体;再次返回到until后,判断条件测试结果...直到测试结果成立为止,跳到done语句,表示结束循环。逻辑如下:

(2)应用示例

为指定用户发送在线消息

[root@localhost ~]#vim until-user_online_to_write.sh
#!/bin/bash
#检查参数数量是否足够
if [ $# -lt 2 ];
    then
        echo "Usage: $0 <username1> <username2> ... <message>"
    exit 1
fi

#提取消息,消息为最后一个参数
message="${!#}"

#遍历除最后一个参数外的所有用户名
for username in "${@:1:$#-1}"; do

#检查用户是否为系统内用户
if ! grep -q "^$username:" /etc/passwd; then
    echo "$username is not a valid user on this system."
    continue
fi

#持续检查用户是否登录
while ! who | grep -q "$username"; do
    echo "$username is not logged on. Waiting for the user to log in ..."
    sleep 60
done

#用户已登录,发送消息
    echo "Sending message to $username..."
    write "$username" <<EOF
$message
EOF
    if [ $? -ne 0 ] ; then
        echo "Failed to send message to $username."
    fi
done
[root@localhost ~]#chmod +x until-user_online_to_write.sh
[root@localhost ~]#./until-user_online_to_write.sh root
//发个root自己,消息为空
Message from root@localhost on pts/0 at 16:23 ... Are you ready ? root
EOF

Linux Shell中的for循环用法 在Linux Shell编程中,for循环是一种非常有用的结构,用于迭代执行一系列命令或操作。它允许我们在一定范围内重复执行特定的任务,例如遍历一个数组、处理文件列表或执行一组命令。在每次循环迭代时,变量都会被设置为列表中的下一个元素,然后执行循环体中的命令。在这个示例中,我们展示了嵌套循环的用法。然后,使用for循环遍历这个数字范围,并在循环体中打印出当前数字。然后,使用for循环遍历文件列表,并在循环体中对每个文件执行相应的操作。的数组,并使用for循环遍历数组中的每个元素。在这个示例中,我们使用。 阅读详情

相关推荐

Shell脚本编程学习指南:从基础到实战

本文还有配套的精品资源,点击获取 简介:本文是一份详细的Shell脚本学习笔记,覆盖了从基础知识到高级技巧的方方面面。它将指导读者了解什么是Shell,如何编写和运行Shell脚本,以及如何通过脚本实现系统命令的自动化。内容包括基础语法、变量、数据类型、条件语句、循环结构、函数、流程控制、文件操作、错误处理、命令别名与函数、脚本调试以及最佳实践。此外,还包括了多种脚本示例,...

weixin_36364707的博客 817

Linux:Linux操作系统循环语句-for语句使用介绍

本博客将介绍Linux操作系统中循环语句-for语句的使用方法。我们将详细说明for语句的语法格式,并提供多个案例来演示不同的应用场景。这些案例包括循环创建文件、应用引号或转义符、从变量中取值、从命令中取值、for循环自增自减、批量创建用户、批量探测主机和随机点名。通过学习这些内容,您将能够更好地掌握Shell脚本编写中的循环控制,实现重复执行某些操作的需求。

算命de博客 9044

从零开始之stm32之CAN通信

CAN通信极简教程(小白友好版),从小白的视角了解并实现简单的STM32F103的CAN通信,直接上手。

qq_30993593的博客 1306

linux命令:for循环

for循环: 进行循环操作,for循环语句1.命令格式:第一种格式: for 变量 in 列表; do 循环体 doneUsage: for I in {1..100}; do let SUM+=$i done echo "$SUM"第二种格式: for ((变量=初始值 ; 变...

weixin_34162629的博客 5549

EXCEL实现分层自定义比例随机抽样(图+文教程)

EXCEL实现分层自定义比例随机抽样(图+文教程) 单一字段分层自定义比例随机抽样 多字段分层自定义比例随机抽样 单一字段分层自定义比例随机抽样 首先数据源如下,我们想随机抽张三的金额数据10%、李四金额20%、王五5%、哈哈15%、李六10% 首先第一步,添加辅助列,随机数 =RAND() 对数据进行高级排序 升序、降序都可以 添加辅助列...

可乐联盟 2万+

BBR算法原理与实现深度解析

BBR算法通过重新定义拥塞控制的基本范式,为现代网络应用提供了突破性的解决方案。随着QUIC协议的普及和智能网卡技术的发展,BBR类算法将在边缘计算、云游戏、工业物联网等领域发挥更重要的作用。

程序猿老樊的博客 2418

【Linux脚本篇】循环语句-for

前面讲的判断语句if和case只能做判断,可以说只能做一些判断。如果判断结果为假,将执行最后的命令(一般是exit退出脚本),如果不想退出,继续选从零开始小于10以内的次数,择正确的选项,就需要继续回到上面选择,这时就需要循环语句。

大虾好吃吗 1万+

数据安全实战技能解析:从加密攻防到数字水印的竞赛指南

数据安全是信息安全领域的核心,其基础在于密码学与信息隐藏技术。密码学通过加密算法(如AES、RSA)和哈希函数,保障数据的机密性与完整性,其原理涉及对称/非对称加密、工作模式及密钥管理。数字水印技术则基于信号处理(如DCT/DWT变换),将信息嵌入多媒体载体,用于版权保护与溯源。这些技术的价值在于为数据全生命周期提供“防泄漏”与“可追溯”的解决方案,广泛应用于企业数据治理、合规审计和**数据防泄漏(DLP)** 系统。本文以一场贴近实战的**数据安全职业技能竞赛**为切入点,深入剖析如何运用密码分析、磁盘取

weixin_34314962的博客 402

Linux shell编程学习笔记17:for循环语句

Linux Shell 脚本编程和其他编程语言一样,支持根据条件进行流程控制,提供了if、for、while、until等语句。之前我们探讨了if语句,现在我们来探讨for循环语句。Linux Shell中的for语句十分灵活,格式多样,我们通过实例看看一些常用的格式。需要注意的是不同的shell对for语句的扶持程序也不相同,这里我们主要测试了bash和zsh

Purpleendurer@优快云 1840

Ubuntu 24.04 部署 EMQX 5.8 开源版MQTT服务器:从零搭建到实战应用

本文详细指导如何在Ubuntu 24.04系统上部署EMQX 5.8开源版MQTT服务器。内容涵盖从环境准备、安装Erlang、下载安装包到启动服务的完整步骤,并提供了验证服务、配置网络防火墙以及通过WebSocket工具进行基础消息收发的实战方法,帮助用户快速搭建稳定、免费的物联网消息中间件。

weixin_29209825的博客 293

ROS机器人全覆盖路径规划实战:6种ipa算法对比与选型指南(附避坑经验)

本文深入对比了ROS中ipa_coverage_planning功能包集成的6种全覆盖路径规划算法,包括牛耕分解、栅格旅行商、神经网络、局部能量最小、轮廓线和凸感知放置。文章从覆盖率、重复率、计算效率、动态避障等核心工程指标出发,提供了基于不同场景(如静态/动态环境、规则/复杂布局)的实战选型指南,并分享了神经网络和局部能量最小等关键算法的参数调优与避坑经验,旨在帮助开发者根据实际需求选择并优化最合适的ipa覆盖算法。

perl8的博客 363

linux C笔记4——Shell编程之循环语句

for语句     一般格式:          for 变量 in 参数1 参数2 ...参数n     do         命令序列     done     说明:变量依次被赋值为参数1、参数2....然后依次执行do和done之间的序列。直到最后一个参数赋值完后结束循环。     --------------------       for语句例子1

XGamer 639

【用ArcGIS制作一张好看的中国月度气温图

要最后选中那个事先调整好的那个数据框,这样其他两个数据框才能和其大小一致。

J_Giser的博客 1017

Linux shell编程学习笔记19:until循环语句

Linux shell编程中的until语句,在功能上与其它编程语言一致,但在结构与其它编程语言又不太一样。在大多数编程语言中,until语句的循环条件表达式一般位于循环体语句的后面,但是在Linux shell编程中,until语句的循环条件表达式与for语句和while一样,位于循环体语句的前面。至此我们学习了Linux shell编程中的for、while、until三个循环语句,相对来说,for语句格式更灵活,比如支持 in 表达试,所以应用也相对更广泛。

Purpleendurer@优快云 1022

C#项目实战——【实例】企业人事管理系统(二):4、数据库与数据表设计;5、创建项目;

(1)展开新建的db_PWMS数据库节点,选中“表”节点,单击鼠标右键,在弹出的快捷菜单中选择“新建表”命令,如下图:(2)在SQL Server 2008管理器的右边显示一个新表,这里输入要创建的表中所需要的字段,并设置主键,如下图:(3)单击“保存”按钮,弹出“选择名称”对话框,如下图,输入要新建的表名“tb_Login”,单击“确定”按钮,即可在数据库中添加一个表。

做有价值的事,积累有价值的笔记! 1621

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Linux shell编程学习笔记18:while循环语句

上回我们研究和探讨了Linux shell编程中for 循环语句,与在C/C++中一样,for 循环语句Linux shell编程中有很多灵活的用法。今天我们来研究和探讨while循环语句。while循环语句的使用没有for语句那么灵活,各个shell对它的支持也不尽相同。我们还探讨了使用while循环语句实现无限循环的两种方法 。

Purpleendurer@优快云 3533

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

『linux笔记』Shell编程4:if elif语句,逻辑与逻辑或,for循环,case语句,select循环,case语句,while循环

目录 一、if elif 判断 二、逻辑与逻辑或 三、for循环(名字表循环) 四、select循环 五、case语句 六、while循环 七、总结: 一、if elif 判断 语法格式为: eg :对以上的一个简单应用。 #!/bin/sh # if test then... elif test then... else... fi if [ -d $1 ] #其...

AI新视界 2310

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Linux shell编程学习笔记21:用select in循环语句打造菜单

Linux shell脚本编程提供了select in语句,这是 Shell 独有的一种循环语句,非常适合终端(Terminal)这样的交互场景,它可以根据用户的设置显示出带编号的菜单,用户通过输入不同的编号就可以选择不同的菜单,并执行与菜单对应的功能,这是C、C++、Java、Python 等编程语言中是没有的。在测试中,我们会发现zsh和bash对该句的支持是存在一些差别的。

Purpleendurer@优快云 1764

for linux shell 菜鸟_CentOS「linux」学习笔记25:shell编程for和while循环语句

linux基础操作:主要介绍了shell编程流程控制for和while循环语句。1.for循环例子:例子1:遍历$参数位(注意$会把所有输入的参数位视为一个整体)也就是说只循环了一次。 for i in "$*" do echo "遍历输入的参数位值:$i" done返回结果:遍历输入的参数位值:1 2 例子2:遍历$@参数位($@参数位是把所有输入的参数单独的分为...

weixin_36090220的博客 135

birt脚本for循环语句_CentOS「linux」学习笔记25:shell编程for和while循环语句

linux基础操作:主要介绍了shell编程流程控制for和while循环语句。1.for循环例子:例子1:遍历$参数位(注意$会把所有输入的参数位视为一个整体)也就是说只循环了一次。 for i in "$*" do echo "遍历输入的参数位值:$i" done返回结果:遍历输入的参数位值:1 2 例子2:遍历$@参数位($@参数位是把所有输入的参数单独的分为...

weixin_39611769的博客 184

shell之until循环及函数基本创建调用

这单独的一行就是对前面定义好的DemoFunc函数进行调用,当执行到这一行时,就会跳转到DemoFunc函数的定义处,执行函数体内部的语句,就是会输出。函数功能与调用实现原理和上述一致,不过增加了第二个参数,我们增加第三个第四个参数都是一样的,主要还是函数体中的变量和调用函数时传递的参数。:这是函数定义的开头部分,声明了函数名为DemoFunc,后面紧跟着大括号 { 表示函数体的开始。:,当函数被调用时,它是函数体中首先会执行的语句,它的作用是将字符串。输出到控制台,当函数被调用是,就会执行这条语句。

2401_83140800的博客 812

linux shell 编程

一、Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义: 可以通过脚本测试来区分这几个变量的具体作用和用法. 脚本如下: # vim variable #!/bin/sh echo "number:$#" echo "scname:$0" echo "first :$1" echo "second:$2" echo "argume:$@" echo "sh...

weixin_30256901的博客 99

Linux Shell编程和循环语句

使用 while 循环语句时,有两个特殊的条件测试操作,即 true(真)和 false(假)。使用 true作为条件时,表示条件永远成立,循环体内的命令序列将无限执行下去,除非强制终止脚本(或通过 exit语句退出脚本);反之,若使用 false 作为条件,则循环体将不会被执行。

2501_91557222的博客 1015

Linux之Shell编程之循环语句与函数

break:在循环内部,当执行到 break 命令时,会立即跳出当前的循环,停止循环执行,然后继续执行下一条指令。可以使用 break 命令来提前终止循环,例如当达到特定条件时或者已经执行了足够的次数。continue:在循环内部,当执行到 continue 命令时,会跳过本次循环剩余的代码,并继续下一次循环。可以使用 continue 命令来跳过循环中的某些操作,例如在特定条件下跳过一次循环,或者只执行符合条件的循环。

qq_71300653的博客 985

shell编程之循环语句

在一些技术培训和学习领域,出于实验或测试的目的,需要批量添加用户账号,这些用户的名称中包含固定的前缀字串,并按照数字顺序依次进行编号,账号的数量往往也是固定的。本例中计算从 1 到50 的和,从1开始相加,采用循环的方式,每次循环后加 1,将得到的值加入计算的和中,数字运算采用的是 let 方式,直到加到50为止,具体的操作参考如下。中央电视台著名的“时尚购物街”节目中,有一个猜价格的互动环节,要求参与者在最短的时间内猜出展示商品的实际价格,当所猜的价格高出或低于实际价格时,主持人会给出相应的提示。

king05yh的博客 1151

Linux Shell 编程之循环语句详解

for循环专为遍历固定列表设计,当任务需要对一组具有相同属性的对象执行重复操作时,使用for循环最为便捷,比如批量创建用户、检查多个IP状态、遍历文件列表等。

2501_92765253的博客 1294
上一篇: Linux——Shell编程之条件语句
下一篇: Linux——Shell编程之函数与数组
霖檬ing
博客等级 码龄2年 701粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值