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

如何读取CSV参数调用现有Bash脚本批量生成YAML模板文件

可行实现方案

下面提供两种可直接落地的方案,你可以根据自己的需求选择:


方案1:最小改动复用现有脚本

不需要修改你已经在用的script.sh,只需要新增一层CSV读取逻辑,逐行生成临时变量文件调用原有脚本即可。

前置要求

  • CSV第一行为变量名表头,和你模板中的{{变量名}}一一对应
  • 默认CSV分隔符为逗号,可自行修改为制表符等其他分隔符

示例脚本

#!/bin/bash
# 按需修改以下配置项
TEMPLATE_PATH="template.yml"
CSV_PATH="variables.csv"
EXISTING_SCRIPT="./script.sh"
OUTPUT_NAME_PREFIX="Template"

# 读取表头拿到变量名列表
IFS=, read -r -a var_list < "$CSV_PATH"

row_index=0
# 逐行读取CSV内容
while IFS=, read -r -a value_list; do
  # 跳过表头行
  ((row_index++ == 0)) && continue

  # 生成临时变量文件,适配原有script.sh的-f参数格式
  temp_var_file=$(mktemp)
  for idx in "${!var_list[@]}"; do
    # 自动去除CSV值首尾的双引号(可选,根据你的CSV格式调整)
    cleaned_value=$(echo "${value_list[$idx]}" | sed -e 's/^"//' -e 's/"$//')
    echo "${var_list[$idx]}=$cleaned_value" >> "$temp_var_file"
  done

  # 调用原有脚本生成对应YAML文件
  "$EXISTING_SCRIPT" "$TEMPLATE_PATH" -f "$temp_var_file" > "${OUTPUT_NAME_PREFIX}${row_index}.yml"

  # 清理临时文件
  rm -f "$temp_var_file"
done < "$CSV_PATH"

适配调整说明

  • 如果CSV用制表符分隔,把所有IFS=,替换为IFS=$'\t'
  • 如果不需要自动去除值的双引号,删除sed处理的逻辑即可

方案2:无额外依赖原生实现

如果你不想依赖原有script.sh,可以直接用系统自带的envsubst+sed实现模板渲染,无需额外安装工具。

示例脚本

#!/bin/bash
# 按需修改以下配置项
TEMPLATE_PATH="template.yml"
CSV_PATH="variables.csv"
OUTPUT_NAME_PREFIX="Template"

# 预处理模板:将{{变量名}}格式转换为envsubst识别的${变量名}格式
processed_template=$(sed -e 's/{{\([a-zA-Z0-9_]*\)}}/${\1}/g' "$TEMPLATE_PATH")

# 读取表头
IFS=, read -r -a var_list < "$CSV_PATH"

row_index=0
while IFS=, read -r -a value_list; do
  ((row_index++ == 0)) && continue

  # 导出所有变量到当前环境
  for idx in "${!var_list[@]}"; do
    cleaned_value=$(echo "${value_list[$idx]}" | sed -e 's/^"//' -e 's/"$//')
    export "${var_list[$idx]}"="$cleaned_value"
  done

  # 直接渲染输出YAML
  echo "$processed_template" | envsubst > "${OUTPUT_NAME_PREFIX}${row_index}.yml"
done < "$CSV_PATH"

注意事项

  • 如果你的YAML模板本身包含$符号,需要提前转义为\$避免被误替换
  • 若需要严格校验YAML格式合法性,建议替换渲染逻辑为专门的YAML处理工具yq,比纯文本替换更安全

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:09:03