我尝试了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中的双引号字符串中使用时,必须转义美元。否则,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"