我有一个列表foo = ['tea',''sugar','milk'],col = ['black','white','pink']我想做的是嵌套循环
foo = ['tea',''sugar','milk']
col = ['black','white','pink']
def foo = ['tea','sugar','milk'] def col = ['black','white','pink'] [foo, col].transpose().each { x, y -> sh """aws deploy push --application-name "${x}" --source "${y}" """ }
所需结果
--application-name "tea" --source "black" --application-name "sugar" --source "white" --application-name "milk" --source "pink"
我得到的结果
[Pipeline] script [Pipeline] { [Pipeline] echo --application-name "[tea, black]" --source "null" [Pipeline] echo --application-name "[sugar, white]" --source "null" [Pipeline] echo --application-name "[milk, pink]" --source "null" [Pipeline] } [Pipeline] // script [Pipeline] }
我希望将 foo 和 col中 的列表项一一注入到上面的shell脚本中。有没有一种方法可以将两个列表项一次传递到上面的shell脚本中?
我们可以做点什么 (foo,col).each
(foo,col).each
或使用for循环 for(x in foo && y in col)
for(x in foo && y in col)
引用我的Jenkinsfile
pipeline { agent any stages { stage('hello'){ steps{ script{ def foo = ['tea','sugar','milk'] def col = ['black','white','pink'] [foo, col].transpose().each { x, y -> sh """aws deploy push --application-name "${x}" --source "${y}" """ //echo """--application-name \"${x}\" --source \"${y}\" """ } } } }
}}
我相信转置是您要使用的方法,将两个列表配对,然后可以遍历结果:
[foo, col].transpose().each { x, y -> ... }
更新 :
这就是我的目标。请注意,为简洁起见,删除了一些参数
def foo = ['tea','sugar','milk'] def col = ['black','white','pink'] [foo, col].transpose().each { x, y -> println """--application-name "${x}" --source "${y}" """ }
结果