![在 CURL 命令中使用变量](https://linux22.com/image/1710671/%E5%9C%A8%20CURL%20%E5%91%BD%E4%BB%A4%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%8F%98%E9%87%8F.png)
我正在尝试将文档插入到我的 cloudant 中,如下所示。
@echo OFF
SPEECH_TEXT="Call me Ishmael. Some years ago-never mind how long precisely-"
curl -X POST -k 'https://<user id>.cloudant.com/testdb' -P 443 -H 'Content-Type:application/json' -d '{"transcript":"'"$SPEECH_TEXT"'"}' | jq-win64.exe
出现以下错误:
{
"error": "bad_request",
"reason": "invalid UTF-8 JSON"
}
如果我在命令中用纯文本替换变量,它就可以正常工作。任何帮助都非常感谢。
答案1
我通常会选择以下printf
方式来获得干净的代码:
例子:
[user@localhost ~]$ SPEECH_TEXT="something"
[user@localhost ~]$ body=`printf '{"transcript":"%s"}' $SPEECH_TEXT`
[user@localhost ~]$ echo $body
{"transcript":"something"}
[user@localhost ~]$
就你的情况而言:
curl -X POST -k 'https://cloudant.com/testdb' -P 443 -H 'Content-Type:application/json' -d `printf '{"transcript":"%s"}' $SPEECH_TEXT`