curl ignore --data começando com @ sinal: não leia do arquivo

curl ignore --data começando com @ sinal: não leia do arquivo

Emfolgavocê pode criar um script para o slackbot postar mensagens em um canal como este:

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

Agora eu gostaria de mencionar um nome de usuário como a primeira parte da mensagem, como msg="@joernhees hello self".

O problema com isso é que se o --dataargumento curl começar com um @sinal, ele interpretará a string após o @nome do arquivo e postará seu conteúdo. Existe uma maneira de fazer o curl ignorar o @sinal e enviar um literal @como o primeiro caractere de uma solicitação de postagem?

Responder1

Na verdade, acabei de descobrir que posso fazer isso (mas não tenho certeza se é a melhor opção):

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

O truque é dizer ao curl para ler stdin @-e depois passar a mensagem por meio dele.

Responder2

Eu sei que esta é uma pergunta antiga, mas tive o mesmo problema e a correção acabou sendo usada --data-rawpara situações normais (vejahttps://curl.se/docs/manpage.html#--data-raw) ou --form-stringpara dados multipartes (consultehttps://curl.se/docs/manpage.html#--form-string). Assim, aqui você provavelmente usaria:

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

informação relacionada