【发布时间】: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