相关疑难解决方法(0)

如何在jq中将JSON对象转换为key = value格式?

在jq中,如何将JSON转换为字符串key=value?

从:

{
    "var": 1,
    "foo": "bar",
    "x": "test"
}
Run Code Online (Sandbox Code Playgroud)

至:

var=1
foo=bar
x=test
Run Code Online (Sandbox Code Playgroud)

bash json jq

31
推荐指数
3
解决办法
2万
查看次数

如何将 JSON 转换为环境变量文件格式?

我正在使用 AWS cli 获取 AWS Parameter Store JSON 响应:

echo $(aws ssm get-parameters-by-path --with-decryption --region eu-central-1 \
  --path "${PARAMETER_STORE_PREFIX}") >/home/ubuntu/.env.json
Run Code Online (Sandbox Code Playgroud)

这输出类似:

{
  "Parameters": [
    {
      "Name": "/EXAMPLE/CORS_ORIGIN",
      "Value": "https://example.com"
    },
    {
      "Name": "/EXAMPLE/DATABASE_URL",
      "Value": "db://user:pass@host:3306/example"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我不想写入 JSON 文件,.env而是使用以下格式写入文件:

CORS_ORIGIN="https://example.com"
DATABASE_URL="db://user:pass@host:3306/example"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我发现了类似的问题,例如Exporting JSON toenvironmentvariables,但它们不处理嵌套的 JSON/数组

bash shell json environment-variables jq

3
推荐指数
1
解决办法
2803
查看次数

使用 jq 将 JSON 从 AWS SSM 转换为环境变量

我对此做了一些研究,感觉好像我已经完成了 80% 的工作,但由于分割其中一根字符串,我很难根据需要调整 jq 输出。

我正在尝试将 AWS SSM 的 JSON 输出转换为环境变量。

AWS命令

aws ssm get-parameters-by-path \
--path /qa/es \
--with-decryption \
--query 'Parameters[*].{Name:Name,Value:Value}' \
Run Code Online (Sandbox Code Playgroud)

输出

[
    {
        "Name": "/qa/es/AWS_ACCESS_KEY_ID",
        "Value": "ABC123"
    },
    {
        "Name": "/qa/es/AWS_SECRET_ACCESS_KEY",
        "Value": "abcdefghijkl"
    },
    {
        "Name": "/qa/es/ENDPOINT",
        "Value": "https://amazonaws.com"
    }
]
Run Code Online (Sandbox Code Playgroud)

我所需的 jq 输出,请注意,我仅在最后一个 / 之后的环境变量之后。在某些情况下,这可能是 /qa/es/something/nested/ENV_VAR

AWS_ACCESS_KEY_ID=ABC123
AWS_SECRET_ACCESS_KEY=abcdefghijkl
ENDPOINT=https://amazonaws.com
Run Code Online (Sandbox Code Playgroud)

一旦我有了这个,我就可以利用这里的答案来设置环境变量。将 JSON 导出到环境变量

我最接近的是

jq -r "map(\"\(try(.Name |= split(\"/\")))=\(.Value|tostring)\")|.[]" params.json
Run Code Online (Sandbox Code Playgroud)

这给了我

{"Name":["","qa","es","AWS_ACCESS_KEY_ID"],"Value":"ABC123"}=ABC123
{"Name":["","qa","es","AWS_SECRET_ACCESS_KEY"],"Value":"abcdefghijkl"}=abcdefghijkl
{"Name":["","qa","es","ENDPOINT"],"Value":"https://amazonaws.com"}=https://amazonaws.com
Run Code Online (Sandbox Code Playgroud)

接近,但还不够接近!有人能在这里指出正确的方向吗?

regex json environment-variables jq

1
推荐指数
1
解决办法
1754
查看次数

标签 统计

jq ×3

json ×3

bash ×2

environment-variables ×2

regex ×1

shell ×1