詹金斯外壳字符串报价替换



我有一个带有执行外壳框的 Jenkins 作业。在执行外壳中,我使用 bash 而不是破折号 (sh)。在执行外壳中,我有一些字符串,这些字符串应该被解释为它们包含转义序列(在这种情况下是换行符:n),所以这里有一个示例执行外壳:

#!/bin/bash
set -x #echo on
git fetch
...
git commit -m "Merging $DEVELOPEMENTBRANCH into $INITIALBRANCHnnThis is an example second paragraph."
...

我这里的问题是脚本块被 Jenkins 以一种改变其行为的方式解释/替换,具体来说,它替换变量并用单引号替换双引号,因此在控制台输出中它看起来像这样:

[4] $ /bin/bash /tmp/hudson7542128982632971668.sh
+ git fetch
...
+ git commit -m 'Merging my_feature into developnnThis is an example second paragraph'
...

但这样,n部分就不会因为单引号而被解释。这有什么诀窍?我想保留双引号或至少解释n序列。

git commit -m "A multi-linenncommit message"不会生成多行还是提交消息。从字面上看,提交消息将是 A multi-linenncommit message 。双引号不会导致bash解释printf转义序列。

要获取多行提交消息,您需要:

git commit -m "`printf "A multi-linenncommit message"`"

这在 Jenkins shell 步骤中工作正常。

相关内容

  • 没有找到相关文章

最新更新