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

GitHub Actions能否读取或cat $GITHUB_ENV文件?

GitHub Actions中读取$GITHUB_ENV/$GITHUB_OUTPUT的问题解析

为什么cat $GITHUB_ENV会输出空内容

$GITHUB_ENV是GitHub Actions用于临时传递环境变量的中间文件,机制如下:

  • 当你在某个step中向$GITHUB_ENV写入内容后,该step执行结束时,Actions引擎会读取这个文件的内容,将变量注入到后续step的环境中。
  • 完成处理后,$GITHUB_ENV文件会被清空(或替换为新的空文件),所以后续step执行cat $GITHUB_ENV只能得到空输出。

能否直接cat $GITHUB_ENV和$GITHUB_OUTPUT?

  • $GITHUB_ENV:仅能在写入该文件的同一个step内cat到内容,step结束后文件被清空,后续step无法读取到之前写入的内容。
  • $GITHUB_OUTPUT:和$GITHUB_ENV机制完全一致,仅在写入的同一个step内可以cat到内容,step结束后Actions处理文件并清空,后续step无法通过cat读取。

除直接调用变量外的读取方式

  1. 在写入的同一个step内读取文件内容
    如果需要查看刚写入的内容,可以在同一个step里完成写入和读取:

    - name: 写入并查看GITHUB_ENV内容
      run: |
        echo "OUTPUT1='odoyle rules'" >> $GITHUB_ENV
        cat $GITHUB_ENV  # 此处能看到刚写入的内容
    
  2. 打印整个环境变量集合
    若要在后续step查看所有已加载的环境变量,直接使用env命令打印全部环境变量,或通过过滤定位目标变量:

    - name: 打印所有环境变量
      run: env
    # 或者过滤特定变量
    - name: 打印目标环境变量
      run: env | grep OUTPUT1
    
  3. 读取$GITHUB_OUTPUT的替代方式
    对于$GITHUB_OUTPUT,若要在后续step获取输出值,需通过step ID引用:${{ steps.step_id.outputs.output_key }};如果要在写入的step内查看内容,同样在写入后立即cat:

    - name: 写入并查看GITHUB_OUTPUT内容
      id: my_step
      run: |
        echo "output_key=output_value" >> $GITHUB_OUTPUT
        cat $GITHUB_OUTPUT
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 20:22:45