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

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

松弛您可以编写脚本 slackbot 将消息发布到如下频道:

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

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

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

答案1

实际上我刚刚发现我可以这样做(但不确定这是否是最好的选择):

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

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

答案2

我知道这是一个老问题,但我遇到了同样的问题,解决办法适用--data-raw于正常情况(参见https://curl.se/docs/manpage.html#--data-raw)或多--form-string部分数据(参见https://curl.se/docs/manpage.html#--form-string)因此,在这里你可能会使用:

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

相关内容