优秀的编程知识分享平台

网站首页 > 技术文章 正文

Shell脚本中的until循环语句

nanyue 2025-04-24 06:18:21 技术文章 2 ℃

while循环语句是在条件成立(真)时,执行命令序列;条件不成立(假)时,退出循环;until循环语句则恰好相反,是在条件不成立(假)时,执行命令序列。

until 循环的核心价值在于反向条件控制,尤其适合需要 “持续等待直到某事件发生” 的场景。比如,在脚本中需要判断某个文件是否生成,没有生成,说明进程启动失败;或者在脚本中需要判断某个进程是否启动,未启动,说明服务启动失败等等。

  1. until语句的结构:
until 条件测试操作
do
  命令序列
 done
  1. until语句的执行流程

首先判断until后的条件测试操作结果,如果条件不成立(假),则执行do...done循环体中的命令序列;返回until后再次判断条件测试结果,如果条件仍然不成立,则继续执行循环体;再次返回到until后,判断条件测试结果......如此循环,直到until后的条件测试结果成立为止,最后跳转到done语句,表示结束循环;


典型案例

  1. 判断文件或目录是否存在,如果不存在则一直等待,直到文件或目录生成再继续往下执行
until [[ -e /path/to/file ]]
do
  echo "等待文件生成......"
  sleep 1
done
echo "文件已就绪,继续执行..."
  1. 判断下载文件是否成功,不成功则等待5s后,重试
until curl -o data.zip https://example.com/data.zip; do
  echo "下载失败,5秒后重试..."
  sleep 5
done
  1. 代替复杂的while循环语句
# 传统 while 写法,!号用于取反
while ! [[ $status == "success" ]]; do ... done

# 等价 until 写法
until [[ $status == "success" ]]; do ... done

何时使用until,何时使用while

Tags:

最近发表
标签列表