You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Action中处理含三种引号的提交消息避免命令执行失败

GitHub Action 保存含特殊字符的Commit Message解决方案

靠谱的两种写法

1. 用toJSON过滤器自动转义特殊字符

GitHub Actions表达式自带的toJSON会把字符串转成合法的JSON格式,自动处理双引号、单引号、反引号这些麻烦字符,直接用就行:

- name: 保存Commit Message
  run: printf '%s\n' ${{ toJSON(github.event.workflow_run.head_commit.message) }} >> tmp.txt

或者简化成echo写法,因为toJSON输出的是带双引号的合法字符串,直接输出不会出错:

- name: 保存Commit Message
  run: echo ${{ toJSON(github.event.workflow_run.head_commit.message) }} >> tmp.txt

2. 通过环境变量传递

把变量赋值给环境变量,bash会自动处理转义,用双引号包裹环境变量即可:

- name: 保存Commit Message
  env:
    COMMIT_MSG: ${{ github.event.workflow_run.head_commit.message }}
  run: echo "$COMMIT_MSG" >> tmp.txt

之前写法失效的原因

  • 直接双引号包裹变量:变量里的双引号会提前闭合外层引号,导致命令语法错误。
  • 单引号包裹变量:GitHub会直接展开变量内容,若变量含单引号,会闭合外层单引号,触发语法问题。
  • 反引号包裹:bash会把反引号里的内容当作命令执行,不仅存不了内容还可能触发危险操作。

内容的提问来源于stack exchange,提问作者torwent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:40:23