你如何在 jq 中分配 json 个对象?
How do you assign json objects in jq?
我试过了jq --argjson value '{"foo": "bar", "bar": "foo"}' ".x = $value" <<< "$json"
价值$json
{
"x":{
"foo": "hello"
},
"y":{
"foo": "world"
}
}
我得到的只有jq: 1 compile error
我预计:
{
"x":{
"foo": "bar",
"bar": "foo"
},
"y":{
"foo": "world"
}
}
我试过在 $value 周围添加引号,但它抱怨 bash 引用问题,我相信它试图将整个 json 对象保存为字符串
美元在 shell 中的 double quoted string 中使用时必须进行转义。否则 shell 会解释它并将语句扩展为:
jq --argjson value '{"foo": "bar", "bar": "foo"}' ".x = " <<< "$json"
empty since not set in the shell ^^^
我建议将 jq 命令用单引号引起来:
jq --argjson value '{"foo": "bar", "bar": "foo"}' '.x = $value' <<< "$json"
我试过了jq --argjson value '{"foo": "bar", "bar": "foo"}' ".x = $value" <<< "$json"
价值$json
{
"x":{
"foo": "hello"
},
"y":{
"foo": "world"
}
}
我得到的只有jq: 1 compile error
我预计:
{
"x":{
"foo": "bar",
"bar": "foo"
},
"y":{
"foo": "world"
}
}
我试过在 $value 周围添加引号,但它抱怨 bash 引用问题,我相信它试图将整个 json 对象保存为字符串
美元在 shell 中的 double quoted string 中使用时必须进行转义。否则 shell 会解释它并将语句扩展为:
jq --argjson value '{"foo": "bar", "bar": "foo"}' ".x = " <<< "$json"
empty since not set in the shell ^^^
我建议将 jq 命令用单引号引起来:
jq --argjson value '{"foo": "bar", "bar": "foo"}' '.x = $value' <<< "$json"