curl ignore --datos que comienzan con el signo @: no leer del archivo

curl ignore --datos que comienzan con el signo @: no leer del archivo

Enflojopuedes programar slackbot para publicar mensajes en un canal como este:

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

Ahora me gustaría mencionar un nombre de usuario como la primera parte del mensaje como msg="@joernhees hello self".

El problema con esto es que si el --dataargumento de curl comienza con un @signo, interpretará la cadena después del @nombre del archivo y publicará su contenido. ¿Hay alguna manera de hacer que curl ignore el @signo y envíe un literal @como primer carácter de una solicitud de publicación?

Respuesta1

En realidad, acabo de descubrir que puedo hacer esto (aunque no estoy seguro de que sea la mejor opción):

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

El truco consiste en decirle a curl que lea desde la entrada estándar @-y luego pasar el mensaje a través de ella.

Respuesta2

Sé que esta es una vieja pregunta, pero tuve el mismo problema y la solución resultó ser útil --data-rawpara situaciones normales (verhttps://curl.se/docs/manpage.html#--data-raw) o --form-stringpara datos de varias partes (verhttps://curl.se/docs/manpage.html#--form-string). Por lo tanto, aquí presumiblemente usarías:

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

información relacionada