カスタム文字列ラッパーシンボルの定義

カスタム文字列ラッパーシンボルの定義

curl次のREST呼び出しを使用してSlackに公開する必要があります。

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

問題はペイロードパラメータにあります。すべてが一重引用符で囲まれているため、変数は評価されません。

ペイロードパラメータを二重引用符で囲んでから、その中のすべての二重引用符をエスケープする醜い問題に対する別の解決策はありますか?

ありがとうございます!

答え1

一時ファイルの使用:

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/[...]

関連情報