parse error: Invalid numeric literal at line 1, column 2 (bash)
parse error: Invalid numeric literal at line 1, column 2 (bash)
我在 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
$(cat << EOF ...)
构造将单引号作为数据的一部分传递,即:
$ jsonStr=$(cat << EOF
'{"key1": "value1", "key2": "value2", "key3": "value3"}'
EOF
)
$ echo "${jsonStr}"
'{"key1": "value1", "key2": "value2", "key3": "value3"}'
注意 leading/trailing 单引号。
要克服解析错误,您需要去掉单引号,例如:
$ jsonStr=$(cat << EOF
{"key1": "value1", "key2": "value2", "key3": "value3"}
EOF
)
# or
$ jsonStr='{"key1": "value1", "key2": "value2", "key3": "value3"}'
以上两个给我们:
$ echo "${jsonStr}"
{"key1": "value1", "key2": "value2", "key3": "value3"}
现在 jq/del
按预期工作:
$ jq 'del(.key3)' <<< "${jsonStr}"
{
"key1": "value1",
"key2": "value2"
}
然后 +
操作也有效:
$ STRING="hello"
$ jq 'del(.key3)' <<< "${jsonStr}" | jq '. + {'"$STRING"': "value4"}'
{
"key1": "value1",
"key2": "value2",
"hello": "value4"
}
综合考虑:
jsonStr='{"key1": "value1", "key2": "value2", "key3": "value3"}'
jsonStr=$(jq 'del(.key3)' <<< "${jsonStr}")
STRING="hello"
jsonStr=$(jq '. + {'"${STRING}"': "value4"}' <<< "${jsonStr}")
echo "${jsonStr}"
生成:
{
"key1": "value1",
"key2": "value2",
"hello": "value4"
}
我在 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
$(cat << EOF ...)
构造将单引号作为数据的一部分传递,即:
$ jsonStr=$(cat << EOF
'{"key1": "value1", "key2": "value2", "key3": "value3"}'
EOF
)
$ echo "${jsonStr}"
'{"key1": "value1", "key2": "value2", "key3": "value3"}'
注意 leading/trailing 单引号。
要克服解析错误,您需要去掉单引号,例如:
$ jsonStr=$(cat << EOF
{"key1": "value1", "key2": "value2", "key3": "value3"}
EOF
)
# or
$ jsonStr='{"key1": "value1", "key2": "value2", "key3": "value3"}'
以上两个给我们:
$ echo "${jsonStr}"
{"key1": "value1", "key2": "value2", "key3": "value3"}
现在 jq/del
按预期工作:
$ jq 'del(.key3)' <<< "${jsonStr}"
{
"key1": "value1",
"key2": "value2"
}
然后 +
操作也有效:
$ STRING="hello"
$ jq 'del(.key3)' <<< "${jsonStr}" | jq '. + {'"$STRING"': "value4"}'
{
"key1": "value1",
"key2": "value2",
"hello": "value4"
}
综合考虑:
jsonStr='{"key1": "value1", "key2": "value2", "key3": "value3"}'
jsonStr=$(jq 'del(.key3)' <<< "${jsonStr}")
STRING="hello"
jsonStr=$(jq '. + {'"${STRING}"': "value4"}' <<< "${jsonStr}")
echo "${jsonStr}"
生成:
{
"key1": "value1",
"key2": "value2",
"hello": "value4"
}