簡體   English   中英

詹金斯管道收集方法grep

[英]Jenkins Pipeline Collection method grep

我試圖在聲明性管道中使用java.util.Collection中的grep方法,但它似乎具有不同的簽名。 在腳本控制台中,我可以執行以下簡單示例代碼,而不會出現問題:

[1,2,3,4].grep({ it == 4 })

它返回包含元素4的數組,這是我想要的。 但是,當我在管道中執行類似的代碼時,它返回一個布爾值,這不僅不是我想要的,而且甚至不返回true,在發現某些東西時,它始終為false。

pipeline {
  agent {
    label 'Cloud-Ubuntu-Slave'
  }
  options {
      timestamps()
  }    
  stages {
    stage ('Debug') {
      steps {
        script {
          echo "${[1,2,3,4].grep({ it == 4 })}"
        }
     }
   }
 }

我懷疑在給定管道上下文的情況下,盡管代碼相同,但它執行的是另一種名為grep的方法,而不是Collection中的方法,但是我無法找出更改原因或方式。

同樣奇怪的是,我能夠正確執行Collection中的大多數方法(例如collect)。

顯然,這只是我實際操作的簡化示例。 我真正想做的是基於返回真假的lambda函數對集合進行過濾。 同樣,任何不涉及迭代和手動構建新數組的替代解決方案都將受到歡迎,這已經是我當前非常丑陋的解決方法。

請改用${[1,2,3,4].findAll { it == 4 }} ,在這種情況下,它將與grep相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM