컬 무시 --@ 기호로 시작하는 데이터: 파일에서 읽지 않음

컬 무시 --@ 기호로 시작하는 데이터: 파일에서 읽지 않음

~ 안에느슨하게다음과 같이 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'

관련 정보