相关疑难解决方法(0)

将JSON导出到环境变量

如果我有这样的JSON,

{
    "hello1": "world1",
    "testk": "testv"
}
Run Code Online (Sandbox Code Playgroud)

我想将这些键值对中的每一个导出为环境变量,如何通过shell脚本来实现?那么,例如,当我在终端上写字时echo $hello1,world1应该打印并且类似地用于其他键值对?注意:上面的JSON存在于一个被调用但$values不在文件中的变量中.

我知道它将通过jq并为此编写一个shell脚本来完成,但它不起作用.

for row in $(echo "${values}" | jq -r '.[]'); do
    -jq() {
        echo ${row} | jq -r ${1}
    }
    echo $(_jq '.samplekey')
done
Run Code Online (Sandbox Code Playgroud)

编辑:尝试Turn的答案,我这样做了:

values='{"hello1":"world1","hello1.world1.abc1":"hello2.world2.abc2","testk":"testv"}'
for s in $(echo $values | jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")|.[]" ); do
    export $s
done
Run Code Online (Sandbox Code Playgroud)

bash shell json environment-variables jq

12
推荐指数
4
解决办法
1万
查看次数

如何将 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
查看次数

标签 统计

bash ×2

environment-variables ×2

jq ×2

json ×2

shell ×2