![사용자 정의 문자열 래퍼 기호 정의](https://linux55.com/image/127868/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A0%95%EC%9D%98%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EB%9E%98%ED%8D%BC%20%EA%B8%B0%ED%98%B8%20%EC%A0%95%EC%9D%98.png)
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/[...]