【问题标题】:Interpolation of variables inside JenkinsfileJenkinsfile 中变量的插值
【发布时间】:2018-10-13 15:02:33
【问题描述】:

我现在正在寻求帮助,因为我一直在努力解决一个简单的 sed 命令,该命令要在需要一点变量插值的 Jenkinsfile 中调用。

更好地显示命令而不是大解释:

sh "sed -i -e 's/-RELEASE/-${unixEpoch}/g' myFile"

sed 不同意此语法并打印命令s/ 未完成。

我已阅读有关 String 和 GString 的 Groovy 文档,但我仍然不明白我做错了什么?

这有什么线索吗?

编辑:

我通过调用date +%s 来获取unixEpoch 以获取当前时间戳。

我打印了命令只是为了确定执行了什么,然后我发现:

sed -i -e 's/-RELEASE/-1525341883'
/g' myFile

sed发送的完整错误是:

sed: -e expression #1, char 22: unterminated 's' command

我发现打印的命令中间有一个\n 很奇怪...

【问题讨论】:

  • 我无法在 Ubuntu 16.04 上重现此问题,unixEpoch 值为 123456(用于测试)。你能分享更多关于你是如何执行它的吗?
  • @mkobit 我添加了更多上下文。我想我找到了解决方案。似乎命令date 在字符串末尾添加了一个新行,导致sed 爆炸......

标签: string groovy sed jenkins-pipeline gstring


【解决方案1】:

date +%s 末尾有一个换行符,当您将其插入到生成的 sed 中时,它包含的换行符解释了为什么 sed 抱怨。您可以在使用 ${unixEpoch.trim()} 或修剪 unixEpoch 值之前使用它。

【讨论】:

  • 这是我所期望的。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2017-12-22
相关资源
最近更新 更多