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

GitHub Actions中脚本输出重定向至GITHUB_OUTPUT失败排查

GitHub Actions重定向输出到环境变量失败的问题解决

问题描述

我有一个可生成执行矩阵的bash脚本,想在GitHub Actions任务中使用。脚本本身执行正常,但将输出重定向到$GITHUB_OUTPUT时步骤失败,报错如下:

Run echo "tst=$(${PWD}/dev/i18n-scripts/generate-matrix.sh)\n" >> $GITHUB_GITHUB_OUTPUT

/__w/_temp/ce44932f-d406-437e-b87d-842822d14b51.sh: 1: cannot create : Directory nonexistent
Error: Process completed with exit code 2.

对应的GitHub Actions步骤配置:

steps:
    - name: checkout
      uses: actions/checkout@v3
    - name: make-it-executable
      run: chmod +x ${PWD}/dev/i18n-scripts/generate-matrix.sh
    - name: set-matrix
      run: echo "tst=$(${PWD}/dev/i18n-scripts/generate-matrix.sh)\n" >> $GITHUB_GITHUB_OUTPUT

移除>> $GITHUB_GITHUB_OUTPUT后脚本能正常执行,但无法传递输出到后续步骤,问题出在哪里?

问题原因

核心是环境变量名称拼写错误:GitHub Actions中用于传递步骤输出的环境变量是GITHUB_OUTPUT,而你写的是GITHUB_GITHUB_OUTPUT。当bash解析这个错误的变量名时,因为变量不存在会被展开为空字符串,导致命令变成echo "tst=..." >> ——相当于要重定向到一个空路径,自然会抛出“目录不存在”的错误。

解决方案

1. 修正环境变量名称

把步骤里的$GITHUB_GITHUB_OUTPUT改成$GITHUB_OUTPUT即可,修正后的步骤:

- name: set-matrix
  run: echo "tst=$(${PWD}/dev/i18n-scripts/generate-matrix.sh)" >> $GITHUB_OUTPUT

额外注意事项

  • bash默认不会解析echo里的\n,如果需要换行得加-e参数,不过GitHub Actions的GITHUB_OUTPUT不需要额外换行,每个变量占一行即可,直接去掉\n更稳妥。
  • 如果你的矩阵输出包含空格、引号或其他特殊字符,建议用Here-doc方式避免转义问题:
    - name: set-matrix
      run: |
        echo "tst<<EOF" >> $GITHUB_OUTPUT
        ${PWD}/dev/i18n-scripts/generate-matrix.sh >> $GITHUB_OUTPUT
        echo "EOF" >> $GITHUB_OUTPUT
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 21:15:06