[Shell编程学习路线] 您所在的位置:网站首页 shell编程for [Shell编程学习路线]

[Shell编程学习路线]

2024-06-28 18:39| 来源: 网络整理| 查看: 265

🏡作者主页:点击! 

🛠️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脚本编写中取得更多成就

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

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

神秘泣男子



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有