我有一个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"将是你的名字加上空格。