声明:
本文的学习内容来源于B站up主“泷羽sec”视频【shell编程(8) until循环以及函数基本创建调用】的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。
在 Linux Shell 脚本中,循环是自动化任务的核心工具之一。until 循环是一个强大的工具,用于在特定条件为假时执行一段代码,直到条件变为真为止。本文将介绍 until 循环的基本用法、应用场景以及一些实践示例。
1 什么是 until 循环?
until 循环的结构与 while 循环相似,区别在于:
while循环在条件为真时执行;until循环在条件为假时执行。
其基本语法如下:
until [ 条件 ]
do
命令块
done
执行流程:
- 检查条件:如果条件为假,执行
do块中的命令。 - 再次检查条件:直到条件为真时退出循环。
2 使用场景
until 循环常用于:
- 等待某个系统状态(如文件存在、端口可用)达成条件。
- 在反逻辑场景中简化代码。
3 示例
3.1 简单计数器
以下代码从 1 计数到 5,使用 until 循环:
#!/bin/bash
count=1
until [ $count -gt 5 ]
do
echo "Count is: $count"
((count++))
done
输出:
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
解释:
[ $count -gt 5 ]表示循环条件,当计数器count大于 5 时退出循环。- 每次循环中,
count自增 1。
3.2 等待文件出现
以下脚本使用 until 循环等待文件 /tmp/myfile 出现:
#!/bin/bash
until [ -e /tmp/myfile ]
do
echo "Waiting for /tmp/myfile to be created..."
sleep 2
done
echo "/tmp/myfile has been created!"
解释:
-e /tmp/myfile检查文件是否存在。- 循环内每隔 2 秒检查一次,直到文件创建为止。
3.3 网络端口检查
以下脚本检查本地端口 8080 是否被监听:
#!/bin/bash
until netstat -tuln | grep -q ':8080'
do
echo "Port 8080 is not active. Retrying in 5 seconds..."
sleep 5
done
echo "Port 8080 is now active!"
解释:
netstat -tuln | grep -q ':8080'检查端口 8080 是否正在被监听。- 如果端口未激活,每 5 秒重试一次。
4 注意事项
- 条件逻辑清晰:确保
until的条件与循环任务匹配,否则容易造成逻辑混乱。 - 避免死循环:提供退出条件,防止循环永远运行。
- 加上延时:在频繁检查的脚本中,适当延时可以减少系统负担。
1333

被折叠的 条评论
为什么被折叠?



