curl ignore - 以@符号开头的数据:不要从文件中读取

时间:2015-06-03 13:31:28

标签: http curl slack-api

slack中,您可以编写slackbot脚本,将消息发布到这样的频道:

curl --data "$msg" $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random'

现在我想提及一个用户名作为消息的第一部分,如msg="@joernhees hello self"

问题在于,如果curl的--data参数以@符号开头,它将在@之后将字符串解释为文件名并发布其内容。有没有办法让curl忽略@符号并发送文字@作为帖子请求的第一个字符?

2 个答案:

答案 0 :(得分:4)

如果您使用的是新版cURL,还可以使用--data-raw选项:

http://curl.haxx.se/docs/manpage.html#--data-raw

警告一句是,看着我的笔记本电脑,Yosemite出现了旧版本的cURL。

一般情况下,如果您正在创建发布到Slack的工具,我建议您在脚本中使用HTTP库,而不是调用shell并调用curl命令。

答案 1 :(得分:0)

实际上我发现我可以做到这一点(不确定它是最好的选择):

curl --data '@-' $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random' <<< "$msg"

诀窍是告诉curl从stdin @-读取然后通过那个传递消息。