curlignore--以@符號開頭的資料:不從檔案讀取

curlignore--以@符號開頭的資料:不從檔案讀取

鬆弛您可以編寫 slackbot 腳本將訊息​​發佈到頻道,如下所示:

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

現在我想提及用戶名作為訊息的第一部分,例如msg="@joernhees hello self"

這樣做的問題是,如果--datacurl的參數以@符號開頭,它將解釋as檔名後面的字串@並發布其內容。有沒有辦法讓curl忽略該@符號並將文字@作為發布請求的第一個字元發送?

答案1

實際上我剛剛發現我可以做到這一點(但不確定這是最好的選擇):

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

訣竅是告訴curl 從標準輸入讀取@-,然後通過它傳遞訊息。

答案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'

相關內容