[Shell编程学习路线]——for循环应用技巧 语法和案例

🏡作者主页:点击! 

🛠️Shell编程专栏:点击!

⏰️创作时间:2024年6月20日16点21分

🀄️文章质量:96分


目录

————前言————

for 循环语句

基本结构

图示原理

for循环实例

测试

举一反三

实例(ping)

总结


————前言————

在Shell编程中,for循环是一个强大且常用的控制结构,可以极大地简化任务的自动化处理。无论是批量处理文件、执行重复性任务,还是实现复杂的逻辑控制,for循环都能提供高效且灵活的解决方案。在这篇文章中,我们将深入探索for循环的多种应用技巧,通过具体实例帮助你掌握其在实际编程中的妙用。不论你是Shell编程的新手还是有经验的开发者,这里都有适合你的实用技巧,助你在Shell脚本编程的道路上更进一步。

当面对各种列表重复任务时,使用简单的if语句已经难以满足要求,而顺序编写全部代码更是显得异常烦 琐、因难重重,学习的for循环语句,可以很好地解决类似问题。

for 循环语句

for 循环是Shell脚本中用于遍历列表、数组或文件的重要工具。它通过指定一个变量和一组值,依次将 每个值赋给变量,并执行相应的命令块。这使得在Shell中能够方便地处理多个文件、目录或其他数据 集,用于自动化任务和批处理操作。

基本结构

for 变量名 in 取值列表
do
执行的命令
done

`for 变量名 in 取值列表`: 这部分定义了循环的结构。`变量名` 是用来存储列表中当前值的变量名。`取 值列表` 是一个用空格分隔的列表,可以是具体的数值、字符串、文件名列表等。

`do`: 表示循环开始,后面紧跟着要执行的命令块。 `执行的命令`: 在每次循环迭代时执行的命令或命令块。可以是任意Shell命令,通常使用`变量名` 来访问 当前循环迭代中的值。 `done`: 表示循环体的结束。

它的作用是依次将列表中的每个值赋给变量名,并执行相应的命令块,直到列表中的所有值都被处理完 毕。

图示原理

for循环实例

实例 1.根据文档中的姓名去创建用户 并设置密码为123456 编写脚本 user.sh

vim user.sh
#!/bin/bash
#2024-6-13-13-57-35
for i in `cat user.txt`
do
useradd $i
echo '123456' | passwd --stdin $i &> /dev/null
done

添加人员名单

vim user.txt
wangwu
zhangsan
lisi
smqnz

测试

bash user.sh //执行脚本
tail -4 /etc/passwd //查看是否成功

举一反三

通过上述实验 我们根据文本创建用户,现在我们根据文本删除用户 编写脚本内容

#!/bin/bash
for i in `cat user.txt`
do
userdel -r $i
echo "用户$i 删除成功"
done

可以看到家目录已经删除成功说明用户也是删除成功

实例(ping)

题目要求编写一个脚本,根据给定的IP地址列表,检查每个主机的状态。这意味着脚本需要能够逐个Ping 每个IP地址,并显示每个主机是否可达。 第一步创建IP地址列表 第二步编写脚本 第三步执行并测试

vim ip.txt
 192.168.93.1 
192.168.93.2 
192.168.93.111 
192.168.93.11

编写脚本
 

vim ip.sh
#!/bin/bash
for i in `cat ip.txt`
do
ping -c 3 -i 0.2 -W 3 $i &> /dev/null
if [ $? -eq 0 ];then
echo "$i is up"
else
echo "$i is down"
fi
don

解释如下

for i in \cat ip.txt`: 使用 cat命令读取ip.txt 文件中的每一行,每一行一个IP地址。反引号 \ ` 用于命令替换,将 cat ip.txt 的输出作为 for 循环的输入。

ping -c 3 -i 0.2 -W 3 $i &> /dev/null: 对每个IP地址 $i 执行Ping命令:

-c 3: 发送3个ICMP包。

-i 0.2: 设置ICMP包的发送间隔为0.2秒。

-W 3: 设置超时时间为3秒。

&> /dev/null: 将Ping命令的所有输出重定向到 /dev/null,即丢弃所有输出,只关注命令的返回状态。

if [ $? -eq 0 ]; then ... fi: 检查上一条命令的返回状态: $? 是上一个命令的退出状态码,Ping命令成功返回0,失败返回其他值。

如果返回状态为0,输出 "$i is up",表示主机可达。

如果返回状态不为0,输出 "$i is down",表示主机不可达或Ping超时。

总结

通过本文的学习,我们详细探讨了Shell编程中for循环的多种应用场景和技巧。从基本的语法结构,到复杂的文件处理和数据操作,for循环展示了其在Shell脚本中的强大功能。我们不仅了解了如何使用for循环遍历列表、文件内容,还学会了在实际项目中应用这些知识以提高脚本的效率和可维护性。

通过这些实例,相信你已经对for循环有了更深刻的理解和更熟练的掌握。在今后的编程实践中,希望你能灵活运用for循环,为解决各种自动化任务提供高效的解决方案。Shell脚本的魅力在于其简洁和强大,for循环作为其中的重要工具,定会成为你编程道路上的得力助手。

继续探索Shell编程的其他强大功能,不断提升你的编程能力,期待你在Shell脚本编写中取得更多成就

"成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计程序,实现高精度圆周率的计算和存储,使用线性表突破程序设计语言内置变量的数值和有效数字范围限制

一、使用线性表突破程序设计语言内置变量的数值和有效数字范围的限制,为了实现高精度圆周率的计算,先根据数学公式进行对PI高精度运算,如图1-1。根据这个数学公式 π2 0nn!2n1‼ 即 Rn1Rn*n2n1,R11,sum π2* n1∞Rn 来…

02 Pytorch_NLP

1. N-gram n决定关联信息 2. TF____IDF TF:词频 IDF:逆向序列 假如:TF * IDF 就是当前的文件,那么乘积反而更大! 因为它只出现在 特定的文章中! TF-IDF 简介 TF-IDF(Term Frequency-Inverse…

Ansys Mechanical|学习方法

Ansys Mechanical是Ansys的旗舰产品之一,涉及的学科体系全面丰富,包括的力学分支主要有理论力学,振动理论,连续介质力学,固态力学,物理力学,爆炸力学及应用力学等。 在自媒体及数字经济飞速发展…

【CSS in Depth2精译】1.2 继承~1.3 特殊值

文章目录 1.2 继承1.3 特殊值1.3.1 inherit 关键字1.3.2 initial 关键字1.3.3 unset 关键字1.3.4 revert 关键字 1.2 继承 除了层叠,还有一种给元素设置样式的方式:继承。经常有人把层叠与继承的概念弄混淆。它们虽然有关联,但也应该分辨清楚…

react实现窗口悬浮框,可拖拽、折叠、滚动

1、效果如下 2、如下两个文件不需要修改 drag.js import React from "react"; import PropTypes from "prop-types";export default class DragM extends React.Component {static propTypes {children: PropTypes.element.isRequired};static defaultP…

什么是片上端接校准(On Die Termination Calibration)技术?

On Die Termination Calibration 随着对于数字系统性能要求的不断提高,对信号完整性的要求也越来越高,从而能够在更高的速率下可靠运行。信号线端接是信号完整性管理中的有用元件,可以在memory外部或memory内部使用。在DRAM器件中加入电阻端接…

ChatmoneyAI如狂风般席卷广告创意舞台,轻松闯荡财富之海!

本文由 ChatMoney团队出品 引言 在广告创意行业,创新和高效是赢得市场的关键。而我今天要分享的就是如何利用ChatmoneyAI这款强大的人工智能工具,打破创新难题,赚取丰厚收益。 让我告诉你一个小秘密,有客户曾在一个月内&#xf…

React Native性能优化红宝书

一、React Native介绍 React Native 是Facebook在React.js Conf2015 推出的开源框架,使用React和应用平台的原生功能来构建 Android 和 iOS 应用。通过 React Native,可以使用 JavaScript 来访问移动平台的 API,使用 React 组件来描述 UI 的…

MATLAB直方图有关的函数

histogram Histogram plot画直方图 histcounts 直方图 bin 计数 histcounts是histogram的主要计算函数。 discretize 将数据划分为 bin 或类别 histogram2 画二元直方图 histcounts2 二元直方图 bin 计数 hist和histc过时了。替换不建议使用的 hist 和 histc 实例 hist → \r…

202483读书笔记|《把你写进诗歌里》——人生是一场不知何时散场的约会,爱慕向来短暂,失去才是唯一出路

202483读书笔记|《把你写进诗歌里》——人生是一场不知何时散场的约会,爱慕向来短暂,失去才是唯一出路 摘录 《把你写进诗歌里(2020年度中国优秀诗歌)》,作者上官文露。并不惊艳,中英文双语对照的一本诗集&…

压缩pdf文件大小在线,在线免费压缩pdf

在现在办公中,PDF文档已经成为我们日常工作中不可或缺的一部分。然而,随着文档内容的不断丰富,PDF文件的大小也逐渐增大,这不仅占用了大量的存储空间,而且在传输和共享时也显得尤为不便。所以有时候我们需要把pdf压缩小…

connect-caption-and-trace——用于共同建模图像、文本和人类凝视轨迹预测

介绍 论文地址:https://arxiv.org/abs/2105.05964 源码地址:https://github.com/facebookresearch/connect-caption-and-trace 在过去,计算机视觉和自然语言处理领域的模型和算法的发展只有偶尔的重叠,但近年来,这两…

AI音乐大模型:是创意的助力还是产业的挑战?

近期音乐界迎来了一场前所未有的革命。随着多家科技公司纷纷推出音乐大模型,素人生产音乐的门槛被前所未有地拉低,一个崭新的“全民音乐时代”似乎已近在眼前。然而,在这场技术革新的浪潮中,关于AI产品版权归属、创意产业如何在AI…

服务器无法远程桌面连接,解决服务器进行无法远程桌面连接方法有哪些

当服务器无法建立远程桌面连接时,通常涉及多个层面的排查和修复。下面将详细列举一些专业的解决方法,以应对服务器远程桌面连接问题。 一、基础排查与验证 1. 确认网络连通性: - 使用ping命令检查客户端与服务器之间的网络连通性。 - …

数据结构之B数

目录 1.概述 2.特点 3.诞生 4.优缺点 4.1.优点 4.2.缺点 5.应用场景 6.C语言中的B树实现例子 7.总结 1.概述 B树(B-tree)是一种自平衡的树数据结构,广泛应用于数据库和文件系统中,以便高效地进行顺序读取、写入以及查找…

Cytoscape之操作界面介绍

Cytoscape 简介 Cytoscape是一个专注于开源网络可视化和分析的软件。软件的核心部分提供了网络显示、布局、查询等方面的基本功能。软件的核心可以通过插件架构进行扩展,这样就能快速地开发出新的功能。 Cytoscape 源自系统生物学,用于将生物分子交互网…

win10成功安装stable-diffusion-webui

目录 1.python下载安装 2.git下载安装 3.stable-diffusion-webui下载 4.安装s-d-webui的依赖包(用国内镜像提速) 5.git下载的stable-diffusion-webui,依赖包提示已安装,但运行webui-user.bat后,又开始下载 6.修改…

2024最新AI大模型-LLm八股合集(八)-Transformer模型

更多2024最新AI大模型-LLm八股合集可以拉到文末!!! MHA & MQA & MGA (1)MHA 从多头注意力的结构图中,貌似这个所谓的多个头就是指多组线性变换层,其实并不是,只有使用了一…

ARM Linux 设备树详细介绍(1)

1. ARM&Device&Tree 起源 Linus Torvalds 在 2011 年 3 月 17 日的 ARM Linux 邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发 ARM Linux 社区的地震,随后 ARM 社区进行了一系列 的重大修正。 在过去的 ARM Linux 中&…

Pointnet++改进即插即用系列:全网首发FastKAN|即插即用,提升特征提取模块性能

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入FastKAN,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理…