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

如何在GitHub Actions表达式语法中引用上下文值并设置环境变量?

解决GitHub Actions环境变量表达式语法错误的问题

咱们先拆解一下你踩的几个语法坑,再给出符合要求的正确写法:

你遇到的三个错误原因

  1. 表达式嵌套${{ }}:你在最外层的${{ }}里又套了一层${{ env.PATH }},这完全没必要——${{ }}已经是表达式的边界标记了,内部直接写变量引用就行,不需要额外包裹。
  2. 错误使用{{ }}包裹变量:和上面的问题类似,表达式内部的变量不需要用{{ }}包裹,直接写变量名即可。
  3. job级env块中无法使用env上下文:在定义job的env时,这个job的环境变量还处于初始化阶段,env上下文还没加载系统环境变量(比如PATH、HOME),所以会提示“Unrecognized named-value: 'env'”。

正确的表达式用法实现

如果你想用表达式语法拼接PATH和HOME,推荐用下面两种方式:

方式一:在步骤中用表达式设置环境变量

在steps里,env上下文已经可以正常访问系统环境变量,你可以通过写入GITHUB_ENV来设置自定义变量:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Set custom environment variable
        run: echo "MYVAR=${{ format('{0}:{1}', env.PATH, env.HOME) }}" >> $GITHUB_ENV
      - name: Check environment variable
        run: echo $MYVAR

方式二:在job的env中引用已定义变量(扩展场景)

如果是拼接你自己在env块中已经定义的变量,这种写法是可行的(因为前面的变量已经初始化完成):

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      FIRST_VAR: "hello"
      SECOND_VAR: "world"
      COMBINED_VAR: ${{ format('{0} {1}', env.FIRST_VAR, env.SECOND_VAR) }}
    steps:
      - name: Check combined variable
        run: echo $COMBINED_VAR

表达式语法核心规则总结

  • 表达式必须用${{ }}包裹,内部绝对不能嵌套${{ }}或{{ }}。
  • 不同位置可用的上下文对象不同:
    • job级env块:只能用github、runner、secrets、vars,以及当前env块中已经定义的变量。
    • steps中的表达式:可以使用env上下文(包含系统环境变量和所有已设置的自定义变量)、github、runner等所有可用上下文。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 10:22:41