【问题标题】:curl ignore --data starting with @ sign: don't read from filecurl 忽略 --data 以 @ 符号开头:不从文件中读取
【发布时间】:2015-06-03 13:31:27
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: http curl slack-api


    【解决方案1】:

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

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

    一个警告是,看看我的笔记本电脑,Yosemite 似乎带有旧版本的 cURL。

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

    【讨论】:

      【解决方案2】:

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

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

      诀窍是告诉 curl 从标准输入 @- 读取,然后通过它传递消息。

      【讨论】:

        猜你喜欢
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 2011-03-01
        • 2011-12-30
        • 2016-04-18
        • 2020-05-31
        • 2012-05-05
        • 1970-01-01
        相关资源
        最近更新 更多