【问题标题】:How to use "sed" commands in Jenkins pipeline如何在 Jenkins 管道中使用“sed”命令
【发布时间】:2022-11-04 08:11:20
【问题描述】:

我必须删除管道日志中两个单词之间的空格。这是管道代码

echo "MyUserName: ${cause.userName}"

在此之后,日志文件中的输出是

MyUserName: [James Perera]

日志文件中的预期输出

MyUserName: [JamesPerera]

这是我尝试过的

echo "MyUserName: ${cause.userName}"

sh """   ${cause.userName} sed 's/ //g' """

然后在日志中输出

MyUserName: [James Perera]
[Pipeline] sh
+ sed 's/ //g' '[James' 'Perera]'
sed: can't read [James: No such file or directory
sed: can't read Perera]: No such file or directory

有人可以帮我解决这个问题吗?提前致谢!

笔记:我想删除两个单词之间的空格的原因是我必须将该值作为一个单词传递给服务器。否则它将在服务器中打印 1 个单词 ( "[James" )

【问题讨论】:

  • 我无法遵循 Jenkins 语法,但在命令行中,您希望 sed 's/ //g' <<< $varecho $var | sed 's/ //g' 让 sed 将编辑后的 ​​$var 字符串放在标准输出上。相反,您将字符串的内容作为 sed 的参数放置,sed 期望是名为 [JamesPerera] 的文件
  • 我不确定您的 jenkins 系统上正在运行什么 shell,但如果它是 bash 或 ksh 之类的东西,您应该能够做到参数替换并使用 echo "MyUserName: ${cause.userName// /}"

标签: shell jenkins sed jenkins-pipeline jenkins-groovy


【解决方案1】:

在 bash 中,您可以通过以下方式实现:

echo "MyUserName: ${cause.userName// /}"

变量子串替换的语法:

${variablename//pattern/replacement}

在我们的例子中,模式是我们想要删除的空格字符。并且替换为空以删除任何匹配项。

【讨论】:

    猜你喜欢
    • 2020-12-21
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多