Shell脚本9 -- until循环

声明:
本文的学习内容来源于B站up主“泷羽sec”视频【shell编程(8) until循环以及函数基本创建调用】的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。


在 Linux Shell 脚本中,循环是自动化任务的核心工具之一。until 循环是一个强大的工具,用于在特定条件为假时执行一段代码,直到条件变为真为止。本文将介绍 until 循环的基本用法、应用场景以及一些实践示例。


1 什么是 until 循环?

until 循环的结构与 while 循环相似,区别在于:

  • while 循环在条件为真时执行;
  • until 循环在条件为假时执行。

其基本语法如下:

until [ 条件 ]
do
    命令块
done

执行流程:

  1. 检查条件:如果条件为假,执行 do 块中的命令。
  2. 再次检查条件:直到条件为真时退出循环。

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 注意事项

  1. 条件逻辑清晰:确保 until 的条件与循环任务匹配,否则容易造成逻辑混乱。
  2. 避免死循环:提供退出条件,防止循环永远运行。
  3. 加上延时:在频繁检查的脚本中,适当延时可以减少系统负担。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值