繁体   English   中英

Jenkins Shell字符串引用替换

[英]Jenkins shell string quotation replacement

我有一个詹金斯的工作与执行外壳盒。 在执行外壳中,我使用bash而不是破折号(sh)。 在execute shell中,我有一些应该被解释为包含转义序列的字符串(在本例中为新行: \\n ),因此这里是一个示例execute shell:

#!/bin/bash
set -x #echo on
git fetch
...

git commit -m "Merging $DEVELOPEMENTBRANCH into $INITIALBRANCH\n\nThis is an example second paragraph."
...

我的问题是Jenkins以某种方式来解释/替换脚本块,从而改变其行为,具体来说,它替换变量并将双引号替换为单引号,因此在控制台输出中如下所示:

[4] $ /bin/bash /tmp/hudson7542128982632971668.sh
+ git fetch
...

+ git commit -m 'Merging my_feature into develop\n\nThis is an example second paragraph'
...

但是用这种方式\\n部分不会因为单引号而被解释。 这有什么窍门? 我想保留双引号或至少解释\\n序列。

git commit -m "A multi-line\\n\\ncommit message"仍然不会产生多行提交消息。 从字面上看,提交消息将是A multi-line\\n\\ncommit message 双引号不会导致bash解释printf转义序列。

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

git commit -m "`printf \"A multi-line\n\ncommit message\"`"

在Jenkins Shell步骤中,这可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM