网站首页 > 技术文章 正文
while循环语句是在条件成立(真)时,执行命令序列;条件不成立(假)时,退出循环;until循环语句则恰好相反,是在条件不成立(假)时,执行命令序列。
until 循环的核心价值在于反向条件控制,尤其适合需要 “持续等待直到某事件发生” 的场景。比如,在脚本中需要判断某个文件是否生成,没有生成,说明进程启动失败;或者在脚本中需要判断某个进程是否启动,未启动,说明服务启动失败等等。
- until语句的结构:
until 条件测试操作
do
命令序列
done
- until语句的执行流程
首先判断until后的条件测试操作结果,如果条件不成立(假),则执行do...done循环体中的命令序列;返回until后再次判断条件测试结果,如果条件仍然不成立,则继续执行循环体;再次返回到until后,判断条件测试结果......如此循环,直到until后的条件测试结果成立为止,最后跳转到done语句,表示结束循环;
典型案例
- 判断文件或目录是否存在,如果不存在则一直等待,直到文件或目录生成再继续往下执行
until [[ -e /path/to/file ]]
do
echo "等待文件生成......"
sleep 1
done
echo "文件已就绪,继续执行..."
- 判断下载文件是否成功,不成功则等待5s后,重试
until curl -o data.zip https://example.com/data.zip; do
echo "下载失败,5秒后重试..."
sleep 5
done
- 代替复杂的while循环语句
# 传统 while 写法,!号用于取反
while ! [[ $status == "success" ]]; do ... done
# 等价 until 写法
until [[ $status == "success" ]]; do ... done
何时使用until,何时使用while
猜你喜欢
- 2025-07-19 当后端说"接口没问题"时,我默默打开了curl
- 2025-07-19 shell中如何重新创建目录层次结构,但不包括文件?
- 2025-07-19 第四章 Linux常用shell命令-4.5.磁盘管理
- 2025-07-19 Hadoop学习---HDFS的常用shell命令详解
- 2025-07-19 电脑总是提示flash版本过低或是没有安装Flash,怎么办
- 2025-07-19 Vanilla OS 2.0将从Ubuntu迁移到Debian
- 2025-07-19 最美的Linux:Elementary OS公测版开放下载
- 2025-07-19 Linux下使用Speedtest测试网速(linux网速测试脚本)
- 2025-07-19 微软或因WCOS开发停滞而取消Surface Hub 2X项目
- 2025-07-19 常用设计标准,阀门常用材料、连接形式、材料及表面硬化处理
- 1519℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 609℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 522℃MySQL service启动脚本浅析(r12笔记第59天)
- 490℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 489℃启用MySQL查询缓存(mysql8.0查询缓存)
- 477℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 457℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 454℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)