我有一个带有执行外壳框的 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 步骤中工作正常。