You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Bash循环中每10步执行run.sh,实现总计执行10次?附示例

没问题,我给你两种实用的Bash脚本实现方案,能精准满足你的需求——每10步执行一次run.sh,总共让它跑10次:

方法一:按步数触发,提前终止循环

这种方式适合你已经有明确的总步数逻辑,需要在每10步节点触发脚本,同时控制总执行次数:

#!/bin/bash

# 初始化计数器,记录run.sh已执行的次数
run_count=0

# 循环遍历步数,10次执行 × 10步间隔 = 最多100步,达到次数后提前退出
for step in {1..100}; do
    # 每10步触发一次run.sh
    if (( step % 10 == 0 )); then
        ./run.sh
        ((run_count++))
        # 达到目标次数就跳出循环,避免多余执行
        if (( run_count == 10 )); then
            break
        fi
    fi
    # 这里替换成你每一步实际要执行的逻辑,比如处理文件、调用其他命令等
    echo "正在执行第 $step 步..."
done

逻辑说明

  • 通过run_count变量跟踪run.sh的执行次数,严格控制不超过10次
  • 循环预设最多100步(10次×10步),但只要达到10次执行就会提前退出,节省不必要的循环
  • 每到10的倍数步(10、20...100)就触发一次run.sh

方法二:直接控制执行次数,逻辑更直观

如果你的核心需求是让run.sh跑满10次,每两次之间间隔10步操作,这种方式逻辑拆分更清晰:

#!/bin/bash

# 设定run.sh需要执行的总次数
total_runs=10

for run_idx in {1..$total_runs}; do
    # 先执行10步前置操作
    for step in {1..10}; do
        # 计算当前是全局第几步,方便日志输出
        global_step=$(( (run_idx - 1) * 10 + step ))
        echo "正在执行全局第 $global_step 步..."
        # 这里替换成你每一步的实际业务逻辑
    done
    # 10步完成后执行run.sh
    echo "开始执行第 $run_idx 次 run.sh..."
    ./run.sh
done

逻辑说明

  • 外层循环直接控制run.sh的执行次数(10次),无需计算总步数
  • 内层循环负责每次执行前的10步操作,代码可读性更高,后期修改次数也更方便
  • 通过global_step可以轻松跟踪全局的步数进度

示例场景:让run.sh运行20次

只需要简单修改参数即可:

  • 方法一中,把{1..100}改成{1..200},同时把run_count == 10改成run_count == 20
  • 方法二中,把total_runs=10改成total_runs=20

额外注意事项

  • 确保run.sh有可执行权限:执行chmod +x run.sh赋予运行权限
  • 如果每一步的逻辑是耗时操作,脚本会按顺序同步执行;若需要并行处理,可以在操作后加&(但要注意系统资源占用)

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

火山引擎 最新活动