🏡作者主页:点击!
🛠️Shell编程专栏:点击!
⏰️创作时间:2024年6月20日16点21分
🀄️文章质量:96分
目录
————前言————
在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脚本编写中取得更多成就
"成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"
"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"
神秘泣男子