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

GitLab中如何将含$特殊字符的变量传递至其他阶段?

GitLab CI 传递含$字符的变量至其他Stage的正确方法

问题根源

你遇到的问题是因为shell解析双引号包裹的字符串时,会把$trator识别为未定义的变量,直接替换为空,导致最终写入build.env的内容是pass=Admini,而非预期的pass=Admini$trator。

正确解决方案

以下两种方法均可解决该问题:

方法1:用单引号包裹echo输出内容

使用单引号包裹整个echo字符串,shell不会解析其中的$符号:

build:
  stage: build
  script:
    - my_var='Admini$trator'
    - echo 'pass=$my_var' >> build.env  # 单引号避免shell解析$
  artifacts:
    reports:
      dotenv: build.env 

test:
  stage: test
  needs:
    - job: build
      artifacts: true
  script:
    - echo $pass 

方法2:对变量中的$进行转义(使用$$)

如果需要保留双引号的其他变量解析能力,可将变量里的单个$替换为$$,shell会自动将$$解析为单个$:

build:
  stage: build
  script:
    - my_var='Admini$$trator'  # 用$$转义$
    - echo "pass=$my_var" >> build.env
  artifacts:
    reports:
      dotenv: build.env 

test:
  stage: test
  needs:
    - job: build
      artifacts: true
  script:
    - echo $pass 

效果验证

两种方法执行后,test阶段的echo $pass都会输出Admini$trator,符合预期。

内容的提问来源于stack exchange,提问作者s.dragos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:18:13