如何使用 bash 脚本将 YAML 文件中的变量占位符替换为 JSON 文件中的嵌套值

如何使用 bash 脚本将 YAML 文件中的变量占位符替换为 JSON 文件中的嵌套值

我有一个特定的 CI/CD 构建步骤,需要从嵌套的 JSON 文件中获取环境变量并在 YAML 文件中匹配/替换它们。

例如,在我的 JSON 文件中:

{
    "development": {
        "ENV1": "My Value"
    }
}

然后,我将定义一个带有占位符的 YAML 文件${development.ENV1}

env_variables:
  ENV1: ${development.ENV1}

这样当我的 bash 脚本运行时,它会像这样更新文件:

env_variables:
  ENV1: "My Value"

我找到了一个参考,可以通过导出值并使用环境变量来执行此envsubst操作谷歌社区建设者像这样:

for f in $(ls ${files[*]}); do
    echo "Pre-processing ${f}..." >&2
    cat ${f} | envsubst ${shell_format:+"${shell_format}"} > ${f}.processed
    mv ${f}.processed ${f}
done

但我不太确定如何使用嵌套 JSON 执行此等价操作。这是我第一次“真正”尝试 bash,所以我正在边学边学!

相关内容