我对此有点抓狂。我正在尝试编写一个 shell 脚本,该脚本通过所有环境变量进行索引,然后覆盖 config.json 文件中的变量。
我有一个在 docker 文件中运行的演示角度应用程序,我希望能够将配置变量设置为环境变量。我知道这不是最安全的方法,但这段代码永远不会投入生产,它赋予我的灵活性是可取的。
到目前为止我有这个:
#!/bin/sh
env | while IFS= read -r line; do
value=${line#*=}
name=${line%%=*}
jq --arg name "$name" --arg value "$value" '.[$name] = $value' src/assets/config.json > src/assets/config.json
done
jq . src/assets/config.json
输出的 json 文件始终以空结束。
JQ 有一个内置的
env
函数,它引用当前环境并将其公开为字典。
因此,您需要的是:
jq -n env >src/assets/config.json