如何使用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
相关产品推荐
相关产品推荐

