
~ 안에느슨하게다음과 같이 Slackbot을 스크립트하여 채널에 메시지를 게시할 수 있습니다.
curl --data "$msg" $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random'
이제 와 같은 메시지의 첫 번째 부분으로 사용자 이름을 언급하고 싶습니다 msg="@joernhees hello self"
.
이것의 문제는 --data
컬의 인수가 @
부호로 시작하면 뒤에 있는 문자열을 @
파일 이름으로 해석하고 해당 내용을 게시한다는 것입니다. 컬이 기호를 무시하고 게시물 요청의 첫 번째 문자로 @
리터럴을 보내는 방법이 있습니까 ?@
답변1
사실 난 방금 내가 이 일을 할 수 있다는 것을 알았습니다. (그것이 최선의 선택인지는 확실하지 않습니다.)
curl --data '@-' $'https://<yourteam>.slack.com/services/hooks/slackbot?token=<yourtoken>&channel=#random' <<< "$msg"
비결은 컬에게 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'