输出bash变量,用多行来卷曲json

时间:2015-06-08 15:07:31

标签: json bash curl github-api

我正在尝试创建一个脚本,该脚本将使用Github API发布包含命令输出的注释。此输出有多行。

这是我正在尝试做的事情:

curl -H "Authorization: token oauthtoken" \ 
-H "Content-Type: application/json" \
-X POST -d@- \
https://api.github.com/repos/company/repo/issues/14/comments <<EOF
{
    "body":"$OUTPUT"
}
EOF

如何输出变量以使其尊重包含在其中的多行?现在,当我运行该命令时,所有换行都会被压缩到一行。

1 个答案:

答案 0 :(得分:2)

我不认为问题的根本原因是换行符,问题是$text的值没有正确格式化json。

请按照以下简单示例:

test="
Hello
World
"
curl -X POST -d '{"body": "'"$test"'"}' http://server.com/...

看到新线路正常工作。

为了能够使用json发送任意命令的结果,你需要先对文本进行json编码。