until - 循环直到条件成功
until 在条件命令返回非零状态时执行循环体;条件返回零后停止。它与 while 的判断方向相反。
基本语法
until condition; do
commands
done简单示例
count=1
until (( count > 3 )); do
printf 'count=%d\n' "$count"
(( count += 1 ))
done有上限的重试
重试外部命令时应同时设置次数上限和等待时间,避免无限循环快速消耗资源。
attempt=1
max_attempts=5
until some_command; do
if (( attempt >= max_attempts )); then
echo "达到最大重试次数" >&2
exit 1
fi
printf '第 %d 次执行失败,稍后重试\n' "$attempt" >&2
sleep 5
(( attempt += 1 ))
done如果命令本身可能长时间不返回,还应使用该命令提供的超时参数,或由外部超时工具限制单次执行时间。