【问题标题】:Bad substitution error from within sh filesh 文件中的错误替换错误
【发布时间】:2020-11-06 18:57:49
【问题描述】:

作为 Jenkins 管道的一部分,我使用环境变量。

这很好用:

sh "docker build --build-arg aws_access=${env.AWS_ACCESS_KEY_ID} ...."

但是我们正在重构,现在我们需要使用 sh 文件中的变量。

我们在jenkins文件中这样执行.sh文件:

sh('./bin/someFile.sh')

我们在那个文件里面:

#!/bin/bash
    .... some unrelated stuff .....
docker build --build-arg aws_access=${env.AWS_ACCESS_KEY_ID} ....

Jenkins 构建失败:

./bin/someFile.sh:第 6 行:aws_access=${env.AWS_ACCESS_KEY_ID}:坏 替代

我一直在谷歌上搜索这个问题,并遵循我在 SO 和其他地方找到的所有建议。我错过了什么?

【问题讨论】:

    标签: bash shell jenkins


    【解决方案1】:

    使用 Bash 时不需要 env. 前缀 - 直接引用环境变量:

    docker build --build-arg aws_access=${AWS_ACCESS_KEY_ID}
    

    Bash 变量与 Jenkins 的变量有很大不同,而且,使用您的 Jenkins 脚本,shell 看不到那些“变量”,因为 Jenkins 已经用它们代替了值。

    【讨论】:

      猜你喜欢
      • 2016-09-10
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      • 2017-07-03
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      相关资源
      最近更新 更多