Jenkins EnvInject插件 - 包含多行的环境变量值

5
我遵循了这个帖子中关于如何使用EnvInject插件创建和设置Jenkins环境变量的建议。我正在使用“后构建步骤中的“注入环境变量”并设置“属性文件路径”。
Windows批处理脚本创建了一个名为OPS的环境变量,并将其写入一个包含多行(例如results.txt)的属性文件中。
OPS= This is line one,
This is two
This is three 

挑战: OPS 只从 results.txt 中提取第一行并跳过其余行。
如何设置 OPS,使其将所有行作为其值?
cd C:\To\Test\Class\Path
java utilities.LogExtractor>ops.txt
@echo off
setlocal EnableDelayedExpansion
set LF=^


rem *** Two empty lines are required for the linefeed
FOR /F "delims=" %%a in (ops.txt) do (
  set var=!var!!LF!%%a
)
set var=!var!!LF!
echo OPS=!var! > %JENKINS_HOME%\jobs\%JOB_NAME%\builds\%BUILD_NUMBER%\results.txt

我将“属性文件路径”设置为%JENKINS_HOME%\jobs\%JOB_NAME%\builds\%BUILD_NUMBER%\results.txt
1个回答

2

根据源代码,我可以说它使用java.util.Properties来加载文件,并调用load方法。文档说明可以使用反斜杠转义换行符,因此使用

OPS= This is line one,\
This is two\
This is three 

应该足够了。(注意,行首的空格被省略了。)

谢谢指出 "\ " 可以转义换行符,这会在不加换行符的情况下填充OPS(某个程序)中的所有内容。但我想要包含换行符的格式化内容,因为我想将其包含在电子邮件正文中。有任何建议吗? - Alferd Nobel
1
哦,我错过了行终止符也被丢弃的事实。你可以尝试使用\n\\r\n\来终止行。 (“键和元素中的字符可以用类似于用于字符和字符串文字的转义序列表示(请参见Java™语言规范的3.3和3.10.6节)。”) - phi1010
(您可能还需要转义输入中的任何其他反斜杠,以避免出现意外行为) - phi1010

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接