【发布时间】:2020-11-29 23:26:57
【问题描述】:
我在 bash 中使用 json,但我收到了这个解析错误:
parse error: Invalid numeric literal at line 1, column 2
这段代码有什么问题?
jsonStr=$(cat << EOF
'{"key1": "value1", "key2": "value2", "key3": "value3"}'
EOF
)
jsonStr=$(jq 'del(.key3)' <<<"$jsonStr")
STRING="hello"
jsonStr=$(jq '. + {'"$STRING"': "value4"}' <<<"$jsonStr")
echo $jsonStr
【问题讨论】:
-
除了文字引号使您的数据不再是 JSON(这是主要问题,并在 markp-fuso 的回答中涵盖),请注意
echo $jsonStr本质上是错误的。请参阅BashPitfalls #14 和I just assigned a variable, butecho $variableprints something else! - 正如在markp 的答案中一样,您需要在参数扩展周围加上双引号,即使它们的结果被传递给echo,以防止潜在的意外
标签: json bash syntax-error jq