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

Bash脚本循环运行程序100次grep执行时间结果重复问题咨询

问题原因
  • 临时文件未清空:脚本运行前没有清空tempfile.txt,之前多次运行的残留数据会持续追加到文件中,最终统计行数远超100行。
  • Bash内置time的多进程统计行为:你当前调用的是Bash内置的time命令,当./mdu通过-j $i参数启动多线程/多进程执行时,内置time会为每个子进程单独输出一组时间统计结果,每组都包含real行,单次循环就会产生多条符合过滤条件的记录,并发数越高产生的行数越多。
  • 循环次数不匹配预期:循环初始值i=1,判断条件为[ $i -lt 100 ],实际只会执行99次,达不到你要的100次运行要求。
修复方案

直接调用系统自带的外部time命令(路径一般为/usr/bin/time),同时增加临时文件清空逻辑,修正循环次数,屏蔽目标程序自身的输出干扰,示例脚本如下:

#!/bin/bash
# 清空临时文件,避免历史残留
> tempfile.txt

# 改为for循环,明确执行100次
for ((i=1; i<=100; i++))
do
    # 调用外部time,丢弃mdu自身的stdout输出,只保留time的统计结果,过滤real行再写入临时文件
    /usr/bin/time -p ./mdu -j $i /pkg 2>&1 1>/dev/null | grep ^real >> tempfile.txt
    echo $i
done

# 直接输出为最终结果文件
mv tempfile.txt plot.txt

修复后单次运行只会产生1条real记录,最终plot.txt会刚好有100行数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:48:03