Github 操作如何转义提交消息中的字符

OOM*_*OOM 8 escaping github-actions

您好,我正在 GitHub 操作期间使用curl 将提交消息发送到通知中的 webhook 触发器。

curl -H 'Content-Type:application/json' -d '{ "commit":"${{github.event.head_commit.message}}",...}'
Run Code Online (Sandbox Code Playgroud)

它不适用于提交的消息,包括",例如,如果提交的消息是:feat(#7): replace "FAQ" by "Help Center"

GitHub Action 将尝试以这种方式执行curl:

curl -H 'Content-Type:application/json' -d '{ "commit":"feat(#7): replace "FAQ" by "Help Center"",...}'
Run Code Online (Sandbox Code Playgroud)

结果出现错误...

我试图用以下代码转义双引号:

- run: echo "GITHUB_COMMIT=$(echo ${{github.event.head_commit.message}} | sed 's/"/\\"/g')" >> $GITHUB_ENV
Run Code Online (Sandbox Code Playgroud)

但 Github Action 在执行过程中再次替换了我的deploy.yml 中的“字面意思”值:

Run echo "GITHUB_COMMIT=$(echo feat(#7): replace "FAQ" by "Help Center" | sed 's/"/\\"/g')" >> $GITHUB_ENV
/home/runner/work/_temp/1e27e232-c415-42e0-8ab8-88bb836a0c08.sh: line 1: unexpected EOF while looking for matching `)'
Error: Process completed with exit code 2.
Run Code Online (Sandbox Code Playgroud)

有什么方法可以对 GitHub 操作上下文属性执行操作吗?(就像这里的替换一样)?