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

如何使用Git BASH编写脚本将团队各脚本输出汇总生成CSV文件

Git BASH汇总多语言脚本输出到CSV的实现方案

首先提前统一团队脚本规范:所有脚本运行时的标准输出仅返回需要汇总的核心内容,多余调试日志建议输出到标准错误或提前关闭,避免污染汇总结果

可用脚本示例

#!/bin/bash
# 定义输出的CSV文件路径
OUTPUT_CSV="./script_run_summary.csv"

# 写入CSV表头,可根据团队需要调整字段
echo '"编程语言","脚本路径","运行状态","核心输出","运行耗时(秒)"' > "$OUTPUT_CSV"

# 定义支持的脚本后缀与对应运行命令,可按需扩展
declare -A LANG_EXEC=(
  [py]="python3"
  [js]="node"
  [go]="go run"
  [sh]="bash"
  [rb]="ruby"
  [jar]="java -jar"
)

# 遍历仓库下的所有脚本文件,过滤规则可按需调整,排除依赖目录
find . -type f \( -name "*.py" -o -name "*.js" -o -name "*.go" -o -name "*.sh" -o -name "*.rb" -o -name "*.jar" \) \
  -not -path "*/node_modules/*" \
  -not -path "*/__pycache__/*" \
  -not -path "*/vendor/*" \
  -print0 | while IFS= read -r -d '' script_file
do
  # 提取文件后缀
  suffix="${script_file##*.}"
  # 匹配编程语言名称
  case $suffix in
    py) lang="Python" ;;
    js) lang="JavaScript" ;;
    go) lang="Go" ;;
    sh) lang="Bash" ;;
    rb) lang="Ruby" ;;
    jar) lang="Java" ;;
    *) continue ;; # 不识别的后缀直接跳过
  esac

  # 拼接运行命令,有固定传参需求可直接在此处追加
  exec_cmd="${LANG_EXEC[$suffix]} \"$script_file\""
  
  # 记录开始时间
  start_ts=$(date +%s.%N)
  # 捕获运行输出与退出码,自动转义输出中的双引号避免CSV格式错乱
  run_output=$(eval "$exec_cmd" 2>&1 | sed 's/"/""/g')
  exit_code=$?
  # 计算运行耗时
  end_ts=$(date +%s.%N)
  run_duration=$(echo "$end_ts - $start_ts" | bc -l | xargs printf "%.2f")

  # 标记运行状态
  if [ $exit_code -eq 0 ]; then
    run_status="成功"
  else
    run_status="失败(退出码:$exit_code)"
  fi

  # 写入CSV,所有字段用双引号包裹,避免内容中含逗号导致格式错位
  echo "\"$lang\",\"$script_file\",\"$run_status\",\"$run_output\",\"$run_duration\"" >> "$OUTPUT_CSV"
done

echo "汇总完成,结果已保存至 $OUTPUT_CSV"

注意事项

  • 运行前确保Git BASH环境已配置好所有编程语言的运行命令,可通过--version命令验证各语言环境是否正常
  • 脚本依赖bc命令做浮点运算计算耗时,若Git BASH未自带可手动安装
  • 可根据团队实际需求调整CSV表头、支持的语言类型、脚本过滤规则、运行传参逻辑
  • 汇总前可先执行git pull拉取仓库最新提交,确保使用最新版本的脚本运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 00:09:03