我有问题提取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()无法得到任何结果,虽然批处理命令没有改变?
换句话说,你需要得到输出的最后一个字。所以你可以这样做:
result = stdout.tokenize().last()