You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中实现yarn脚本自动重试,支持间隔限流与30秒超时限制

Bash 重试脚本实现方案

你可以直接使用以下满足「1秒重试间隔、最多累计重试30秒」要求的脚本:

#!/bin/bash
# 配置参数:最大重试30次,对应总时长30秒(间隔1秒)
max_retry=30
retry_interval=1
retry_count=0

while :
do
    # 执行目标命令
    yarn graphql
    # 命令执行成功直接退出循环
    if [ $? -eq 0 ]
    then
        echo "SUCCESS"
        exit 0
    fi

    retry_count=$((retry_count + 1))
    # 达到最大重试次数后报错退出
    if [ $retry_count -ge $max_retry ]
    then
        echo "FAIL: 累计重试${max_retry}次仍未成功"
        exit 1
    fi

    # 等待指定间隔后重试
    sleep $retry_interval
done

自定义调整说明

  • 你可以修改max_retry参数的值调整最大重试次数
  • 你可以修改retry_interval参数的值调整重试间隔(单位为秒,支持0.5这类小数配置)

通用复用方案

如果你需要把重试逻辑复用给其他命令,可以封装为通用函数:

#!/bin/bash
# 通用重试函数:参数1=最大重试次数 参数2=重试间隔 后续参数为要执行的命令
retry() {
    local max_retry=$1
    local retry_interval=$2
    shift 2
    local target_cmd="$@"
    local retry_count=0

    while :
    do
        $target_cmd
        if [ $? -eq 0 ]
        then
            echo "SUCCESS"
            return 0
        fi

        retry_count=$((retry_count + 1))
        if [ $retry_count -ge $max_retry ]
        then
            echo "FAIL: 累计重试${max_retry}次仍未成功"
            return 1
        fi

        sleep $retry_interval
    done
}

# 调用示例:重试30次、间隔1秒执行yarn graphql
retry 30 1 yarn graphql

内容的提问来源于stack exchange,提问作者Charklewis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 17:03:02