0

我有一个 BASH 脚本,它尝试捕获构建/部署日志的输出,并使用 Jira 的 REST API 和 CURL 将它们插入到 Jira 票证中:

curl -v  -X POST \
-H "Content-Type: application/json" \
--data "@header.json" \
--data "@log.txt" \
--data "@footer.json" \
-H "Authorization:Basic ABC123!@#" \
https://companyname.jira.com/rest/api/latest/issue/FOO-1234/comment

我的问题是日志包含各种 JSON 令牌,这会导致插入失败。BASH 有没有办法在发布之前清理文本块以逃避所有非法字符?或者说“不解析此块中的任何内容”或类似的方式?最坏的情况,我会写一些非常可怕的 AWK。

4

2 回答 2

0

曾几何时,我使用此代码片段使用 curl 发送 POST 数据。

urlquote() {
    echo -ne "$1" | xxd -plain | tr -d '\n' | sed 's/\(..\)/%\1/g'
}

它也适用于 unicode 的东西。也许这会有所帮助。

于 2013-08-26T21:42:57.697 回答
0

事实证明,我只需要转义引号并将换行符转换为 \n。我使用了以下 sed 操作:

sed -inplace 's/\"/\\\"/g' log.txt
sed -inplace ':a;N;$!ba;s/\n/\\n/g' log.txt
于 2013-08-27T00:12:10.607 回答