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

GitHub Actions捕获脚本输出时触发'Value cannot be null'错误的原因咨询

GitHub Actions捕获脚本输出时触发'Value cannot be null'错误的原因咨询

嗨,我来帮你拆解这个问题的根源~

你遇到的这个错误,核心原因是GitHub Actions的GITHUB_ENV文件对格式有严格要求:每一行必须遵循变量名=值的格式,不能有独立的无前缀行。

看你的脚本输出,它包含了多行内容(换行、分隔线):

Τhis is before
====================  Rules Evaluation Report  ====================
This is after

当你用echo "EXECUTION_OUTPUT=$(./script.sh)" >> "$GITHUB_ENV"这行命令时,$(./script.sh)会把脚本的多行输出直接插入到echo语句里,最终写入GITHUB_ENV的内容会变成这样:

EXECUTION_OUTPUT=Τhis is before
====================  Rules Evaluation Report  ====================
This is after

注意看第二行,它没有变量名=的前缀,GitHub Actions在解析GITHUB_ENV时,会把这一行当作一个环境变量定义,但找不到对应的变量名(也就是错误里的Parameter 'name'),所以就触发了「Value cannot be null」的报错。

解决办法

有两种常用的方式处理这种多行输出的场景:

  1. 把输出转为单行(适合不关心换行格式的场景)
    用tr命令把所有换行替换成空格,确保输出是单行:

    run: echo "EXECUTION_OUTPUT=$(./script.sh | tr '\n' ' ')" >> "$GITHUB_ENV"
    
  2. 使用Heredoc语法保留多行格式(适合需要保留原始换行的场景)
    这种方式会把脚本的完整输出作为变量的多行值,让GitHub Actions正确识别:

    run: |
      {
        echo 'EXECUTION_OUTPUT<<EOF'
        ./script.sh
        echo EOF
      } >> "$GITHUB_ENV"
    

这样处理后,EXECUTION_OUTPUT就能正确捕获脚本的所有输出,不会再触发格式错误啦~

备注:内容来源于stack exchange,提问作者pkaramol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 14:29:35