欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > [Shell编程学习路线]——for循环应用技巧 语法和案例

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

2024/10/24 20:22:39 来源:https://blog.csdn.net/jxjdhdnd/article/details/139835237  浏览:    关键词:[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.txt192.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脚本编写中取得更多成就

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

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

神秘泣男子

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com