如何用CURL命令给GitHub PR添加多行评论?
解决curl给GitHub PR添加多行评论时的JSON解析错误
问题核心是多行文本里的换行符未被正确转义,导致提交的JSON格式不合法,GitHub API无法解析。以下是两种可靠的解决方法:
方法一:用jq自动处理JSON转义(推荐)
jq工具能自动把多行文本转换成符合JSON规范的字符串,自动处理换行、引号等特殊字符:
- 先安装jq(大部分Linux发行版和macOS可通过包管理器直接安装)
- 读取fileA内容并完成转义:
var1=$(jq -Rs . fileA) - 执行curl命令提交评论:
替换命令里的curl -X POST \ -H "Authorization: token YOUR_GITHUB_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"body\": $var1}" \ https://api.github.com/repos/OWNER/REPO/pulls/PULL_NUMBER/commentsYOUR_GITHUB_TOKEN、OWNER/REPO、PULL_NUMBER为你自己的信息。
方法二:用sed手动转义换行符
如果没有jq,也可以用sed手动替换换行符和双引号:
- 处理fileA内容:
var1=$(sed ':a;N;$!ba;s/\n/\\n/g;s/"/\\"/g' fileA) - 执行curl命令(和方法一的curl命令一致):
curl -X POST \ -H "Authorization: token YOUR_GITHUB_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"body\": \"$var1\"}" \ https://api.github.com/repos/OWNER/REPO/pulls/PULL_NUMBER/comments
注意:直接将多行文本塞进JSON会导致格式错误,必须确保所有特殊字符都被转义,jq是最不容易出错的处理方式。
内容的提问来源于stack exchange,提问作者uni
相关产品推荐
相关产品推荐

