groovy捕获stdout最后一行

问题描述 投票:1回答:1

我有问题提取stdout只得到结果,最后(第二行)。

我有jenkins管道使用groovy脚本执行以下操作:

    stage('Generate'){
       stdout = bat([
           returnStdout: true, 
           script: 'C:/folder/generate.exe --environment %ENVIRONMENT% --optionalproperties %OPTIONALPROPS%',
           encoding: 'UTF-8'
       ]).trim();

如果我通过echo stdout,捕获这个命令生成的内容,我得到标准输出 -

C:\ folder2 \ folder2> C:/folder1/generate.exe - environment PROD --optionalproperties something 12345678

所以我的结果是新行,12345678。我只需捕获这个。

我之前使用过:result = stdout.readLines()。drop(1).split(“”)而我只得到了12345678.但它不知何故停止了工作。

我设法找到了一个解决方法:

result = stdout.reverse()。take(8).reverse()

需要最后8个数字并提取它们。但这不是一个好的解决方案,因为我可能会生成更多或更少的数字,所以我需要一个合适的方法来提取它。

任何建议家伙我可以尝试别的因为我不明白为什么readLines()无法得到任何结果,虽然批处理命令没有改变?

jenkins groovy
1个回答
1
投票

换句话说,你需要得到输出的最后一个字。所以你可以这样做:

result = stdout.tokenize().last()
© www.soinside.com 2019 - 2024. All rights reserved.