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

GitHub Actions中引用变量应何时使用单大括号与双大括号?

GitHub Actions中单大括号与双大括号的核心区别
  • ${变量名} 单大括号格式:Shell运行时替换
    这种写法完全属于Shell语法范畴,GitHub Actions引擎不会对这段内容做任何预处理,会直接把完整命令交给Runner的Shell进程执行。你在Workflow的env字段声明的变量会自动注入到所有Step的Shell运行环境中,所以示例中echo "${MY_VAR}"执行时,Shell会直接读取当前进程的环境变量MY_VAR完成替换输出。

  • ${{ 表达式 }} 双大括号格式:GitHub Actions预处理替换
    这种是GitHub Actions自定义的表达式语法,属于工作流引擎的预处理逻辑,优先级远高于Shell执行。在把run字段的命令传给Shell之前,GitHub会先解析双大括号内的上下文(比如env、github、secrets、needs等内置上下文),直接把表达式的结果替换到命令中。你示例中的echo "${{env.MY_VAR}}"在传给Shell前已经被处理成了echo "something",Shell只是执行了静态输出而已。

二者适用场景差异:
所有需要访问GitHub Actions内置上下文、任务输出、保密信息的场景,必须用双大括号,比如引用github.sha提交哈希、secrets.ACCESS_TOKEN保密配置、上游任务的输出needs.build-job.outputs.build-id,这些值不会默认注入到Shell环境变量中,必须通过预处理替换才能获取。
只需要访问你自己声明的env变量、Shell内置变量时,用单大括号更简洁,也能避免双大括号替换时特殊字符破坏Shell语法的问题。

你给出的示例中两个Step输出结果一致,但底层执行逻辑完全不同,实际使用时可以根据场景灵活选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:18:04