Definir um símbolo de invólucro de string personalizado

0

Eu preciso postar no Slack com uma chamada curl REST assim:

curl -X POST --data-urlencode 'payload={"channel": "#deploybots", "username": "${GIT_BRANCH}-BOT", "text": "Message --> ${1}", "icon_emoji": ":${EMOJI}:"}' https://hooks.slack.com/...

O problema está no argumento payload: como tudo está dentro de aspas simples, as variáveis não são avaliadas.

Existe uma solução alternativa para fazer uma bagunça feia que envolva o argumento payload dentro de aspas duplas e, em seguida, escape de todas as aspas duplas dentro de?

Obrigado!

    
por Dr. Gianluigi Zane Zanettini 16.02.2018 / 17:00

1 resposta

3

Use um arquivo temporário:

scratch="$(mktemp)"
trap 'rm -f "$scratch"' EXIT
cat > "$scratch" << EOF
{
  "channel": "#deploybots",
  "username":  "${GIT_BRANCH}-BOT", 
  "text": "Message --> ${1}", 
  "icon_emoji": ":${EMOJI}:"
}
EOF
curl -X POST --data-urlencode payload@"$scratch" https://hooks.slack.com/[...]
    
por 16.02.2018 / 17:22