[英]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.