bash - sh 文件中的错误替换错误
问题描述
作为我的 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 时不需要env.
前缀 - 直接引用环境变量:
docker build --build-arg aws_access=${AWS_ACCESS_KEY_ID}
Bash 变量与 Jenkins 的变量有很大不同,更重要的是,使用您的 Jenkins 脚本,shell 看不到那些“变量”,因为 Jenkins 已经用它们代替了这些值。
推荐阅读
- django - 通过 ForeignKey 查询模型以接收另一个 ForeignKey 中的数据?
- c++ - 在预处理/编译期间内联汇编到字节码?
- c# - Roslyn 代码修复测试调用 `VerifyDiagnostics` 也为固定代码样本,这使得测试永远不会成功
- reactjs - 如何修复“'nf' 未被识别为内部或外部命令”?
- php - 避免 WooCommerce Dokan 中父订单的订单完成通知
- javascript - 这个历史时区偏移 UTC+0057 是怎么回事?
- pandas - 替换熊猫数据框中 int64 末尾的数字
- node.js - 在该位置创建带有数字的目录
- java - Java Spring Boot:如何实现以 2 个字段作为参数的 Redis 查询?
- html - Catalina - 如何使用 file:// 打开 html 文件 - 沙盒 / 安全