String Jenkins文件中变量的插值
我现在请求帮助,因为我一直在努力处理一个简单的String Jenkins文件中变量的插值,string,groovy,sed,jenkins-pipeline,gstring,String,Groovy,Sed,Jenkins Pipeline,Gstring,我现在请求帮助,因为我一直在努力处理一个简单的sed命令,该命令将在一个需要一些变量插值的jenkins文件中调用 更好地显示命令,而不是大量的解释: sh "sed -i -e 's/-RELEASE/-${unixEpoch}/g' myFile" sed不符合此语法,并打印命令s/未完成 我已经阅读了关于String和GString的Groovy文档,但我仍然不明白我做错了什么 有什么线索吗 编辑: 我通过调用date+%s来获取unixEpoch,以获取当前时间戳 我打印命令只是为了确
sed
命令,该命令将在一个需要一些变量插值的jenkins文件中调用
更好地显示命令,而不是大量的解释:
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表达式#1,字符22:unterminated's'命令
<>我发现奇怪的是,打印命令在它的中间有一个<代码> \n>代码>…> p> <代码>日期+%s>代码>在结尾有一个换行符,当你把它插入到生成的<代码> SED中时,它包含了新行,解释了为什么代码> SED在抱怨。您可以在使用前执行
${unixEpoch.trim()}
或修剪unixEpoch
值。我无法在Ubuntu 16.04上使用unixEpoch
值123456
(用于测试)重现此操作。你能再分享一下你是如何执行它的吗?@mkobit我添加了一些上下文。我想我找到了解决办法。似乎命令date
正在字符串末尾添加新行,导致sed
爆炸……这是我所期望的。谢谢!