If I have a JSON like this,

{
    "hello1": "world1",
    "testk": "testv"
}

我想将这些键值对导出为环境变量,如何通过shell脚本实现?举个例子,当我在终端上写的时候,echo $hello1world1应该被打印出来,其他键值对也是如此?

I know it will be done via jq and written a shell script for this, but it doesn't work.

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

推荐答案

borrow this answer,它完成了将JSON转换为key=value对的所有艰苦工作,您可以通过循环jq个输出并将其转换为export个输出,将它们输入到环境中:

for s in $(echo $values | jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")|.[]" ); do
    export $s
done

如果加载的变量包含嵌入的空格,这也是合理的,尽管稍微复杂一些:

while read -rd $'' line
do
    export "$line"
done < <(jq -r <<<"$values" \
         'to_entries|map("\(.key)=\(.value)\u0000")[]')

Json相关问答推荐

使用动态和可变JSON的图表多条

Postgres Select json数组并重新映射属性名称

褐煤面积图中的分选问题

序列化从/到空值

使用jq过滤复杂json对象中的数据

当由.sh脚本执行时,AWS查询字符串不会提取任何数据

如何获取 JSON 对象字段值和同一 JSON 对象的下一个数组中的字段值?

Python 将 struct 化文本转换和筛选为对象

基于JQ中另一个对象的值 Select 对象

将=分隔值文件转换为:json文件

JQuery,使用 GET 方法发送 JSON 对象

哪个更好:Json 或 XML (PHP)

使用 @ResponseBody 自定义 HttpMessageConverter 来做 Json 事情

Jackson 没有使用 @JsonProperty 覆盖 Getter

在 Java 中比较两个 JSON 文件的最佳方法

你如何在 Arrays of Arrays 上 OPENJSON

仅使用字符串和值解析 JSON 对象

Java HashMap 与 JSONObject

在没有 ASP.NET Core 的情况下将 IConfigurationSection 绑定到复杂对象

如何在预先存在的 SQL 数据库之上使用 Elastic Search?