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

Bitbucket自定义步骤中ALIAS变量无法传递值的问题

问题解决:Bitbucket流水线自定义步骤中变量无法传递到SSH远程命令

问题场景

我在Bitbucket流水线定义了带变量的自定义步骤,传入的ALIAS变量始终无法在SSH远程命令中生效:

自定义步骤代码:

definitions:
    steps:
      - step: &var-test
        name: Var test
        script:
          - ssh ${HOST} "source ~/.bash_profile; cd domains/\${ALIAS}.example.com; ls -la"

调用步骤时传入变量:

- step:
  <<: *var-test
  name: Var test
  variables:
    - ALIAS: 'test.'

HOST变量能正常工作,但ALIAS始终为空,流水线报错:

+ ssh ${HOST} "source ~/.bash_profile; cd domains/\${ALIAS}.example.com; ls -la"
bash: line 1: cd: domains/.example.com: No such file or directory

原因分析

你在命令里用了\${ALIAS},转义符\会阻止Bitbucket流水线的本地shell解析这个变量,导致${ALIAS}原封不动传到远程主机。而远程主机环境中并没有定义ALIAS变量,所以展开后就变成空值,路径也就成了domains/.example.com。

解决方法

需要让本地流水线先解析ALIAS变量,再把完整的命令传到远程主机,去掉转义符即可:

修改自定义步骤的脚本部分:

script:
  - ssh ${HOST} "source ~/.bash_profile; cd domains/${ALIAS}.example.com; ls -la"

这样本地会先把${ALIAS}替换为test.,最终传到远程的命令是:

source ~/.bash_profile; cd domains/test..example.com; ls -la

如果你的ALIAS变量包含空格、特殊字符,还可以用引号包裹变量确保解析正确:

script:
  - ssh ${HOST} "source ~/.bash_profile; cd domains/\"${ALIAS}\".example.com; ls -la"

或者改用单引号拼接的写法:

script:
  - ssh ${HOST} 'source ~/.bash_profile; cd domains/'${ALIAS}'.example.com; ls -la'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:43:29