我为此焦头烂额。我正在尝试以下操作:
curl -S https/api.bitbucket.org/2.0/repositories/etc/etc/pullrequests/comments \
-u username:pw
--request POST --header 'Content-Type: application/json' \
-d '{"content": {"text": "'"$logMsg"'"}}'
即使使用 -S 也会返回一个模棱两可的错误请求。 $logMsg 有大量的特殊字符和换行符,它看起来像的一个例子可能是:
"\n\n***HelloThere** <->:+/"
请注意,无论变量是什么,都应该用双引号引起来。我不知道 bash 是怎么回事以及它如何解释该变量,因为将字符串文字复制并粘贴到邮递员中效果很好。例子:
--data-raw '{"content": { "raw": "\n\n***HelloThere**<->:+/"}}'
我有一种感觉,正在进行一些字符串插值(IE 转向 进入一个实际的换行符)但我不确定如何解决。
不要尝试手动生成 JSON。使用
jq
.
jq --arg lm "$logMsg" '{content: {text: $lm}}' | curl ... -d @-