如何修复shell脚本上的JSON错误?



我有一个bash脚本发送curl post请求。我想传递数据作为bash脚本参数。然而,其中一个参数在字符串中有空格,它失败了,出现下面的错误。

解析JSON数据错误。ntString未在line

上终止

在shell脚本中,我发送如下格式的参数{"name":"'$2'"}

你能帮我解决这个问题吗?

感谢

jq不仅可以很好地操作现有的JSON数据,还可以创建新数据,因为它可以正确处理JSON字符串中无法未转义的字符,以及正确引用。就像

curl ... -d"$(jq -n --arg val "$2" '{name: $val}')"

如果在提问时添加足够的数据会更好。

我假设你的json会像

{
"name": "argument passed"
}
curl -XPOST "your/url/here" -H 'Content-Type:application/json' -d'{"name":"'$1'"}'

将上述命令保存为post_request.sh(可以随意更改名称)。
使用下面的命令运行

sh post_request.sh "argument passed"

"参数passed"将是你的名字加上空格。

最新更新