curl ignore --data 以@符号开头:不要从文件中读取
curl ignore --data starting with @ sign: don't read from file
在 slack 中,您可以编写 slackbot 脚本,将 post 消息发送到这样的频道:
curl --data "$msg" $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random'
现在我想在消息的第一部分提到用户名,例如 msg="@joernhees hello self"
。
问题在于,如果 curl 的 --data
参数以 @
符号开头,它将把 @
之后的字符串解释为文件名,而 post它的内容。有没有办法让 curl 忽略 @
符号并发送文字 @
作为 post 请求的第一个字符?
实际上我刚刚发现我可以做到这一点(虽然不确定这是最好的选择):
curl --data '@-' $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random' <<< "$msg"
诀窍是告诉 curl 从标准输入 @-
读取,然后通过它传递消息。
如果您使用的是新版本的 cURL,您还可以使用 --data-raw
选项:
http://curl.haxx.se/docs/manpage.html#--data-raw
请注意,我的笔记本电脑看起来 Yosemite 附带旧版本的 cURL。
一般来说,如果您正在为 post 创建 Slack 工具,我建议您在脚本中使用 HTTP 库,而不是调用 shell 并调用 curl
命令。
在 slack 中,您可以编写 slackbot 脚本,将 post 消息发送到这样的频道:
curl --data "$msg" $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random'
现在我想在消息的第一部分提到用户名,例如 msg="@joernhees hello self"
。
问题在于,如果 curl 的 --data
参数以 @
符号开头,它将把 @
之后的字符串解释为文件名,而 post它的内容。有没有办法让 curl 忽略 @
符号并发送文字 @
作为 post 请求的第一个字符?
实际上我刚刚发现我可以做到这一点(虽然不确定这是最好的选择):
curl --data '@-' $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random' <<< "$msg"
诀窍是告诉 curl 从标准输入 @-
读取,然后通过它传递消息。
如果您使用的是新版本的 cURL,您还可以使用 --data-raw
选项:
http://curl.haxx.se/docs/manpage.html#--data-raw
请注意,我的笔记本电脑看起来 Yosemite 附带旧版本的 cURL。
一般来说,如果您正在为 post 创建 Slack 工具,我建议您在脚本中使用 HTTP 库,而不是调用 shell 并调用 curl
命令。