我有一个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是否有办法在发布之前清理文本blob以逃避所有非法字符?或者说“不解析这个块中的任何东西”或类似的方式?最糟糕的情况是,我会写一些非常可怕的AWK。
答案 0 :(得分:0)
曾几何时,我使用此代码段使用curl发送POST数据。
urlquote() {
echo -ne "$1" | xxd -plain | tr -d '\n' | sed 's/\(..\)/%\1/g'
}
它也适用于unicode的东西。也许这会有所帮助。
答案 1 :(得分:0)
事实证明,我需要逃脱的只是引号并将换行符转换为\ n。我使用了以下sed动作:
sed -inplace 's/\"/\\\"/g' log.txt
sed -inplace ':a;N;$!ba;s/\n/\\n/g' log.txt