在Groovy(或Java)中如何将字符串数组的所有索引包含到一行中
如果您有java的答案,那么它将非常相似,可以进行翻译。提前感谢您抽出时间
我试图获取数组中的所有字符串,并在一个docker行中调用它们以创建单个tar文件。对于如何创建tar文件,我并不感到困惑。它应该如下所示:
sh "docker save [image1]:tag [image2]:tag etc... > docker.tar"
我的问题是,我需要tar的图像以以下格式列出:
myMap = [
"StringIndex0": ["keyword": "image0", "unrelatedKeyword": "sentence0"],
"StringIndex1": ["keyword": "image1", "unrelatedKeyword": "sentence1"],
"StringIndex2": ["keyword": "image2", "unrelatedKeyword": "sentence2"],
]
我无法执行如下的for循环:
for (index in myMap) {
for (img in myMap[index]['keyword']){
sh "docker save ${img}:tag > docker.tar"
}
}
因为这将分别创建docker save [image1:tag] > docker.tar
和docker save [image2:tag] > docker.tar
,它们将相互覆盖。我正在寻找一个解决方案,能够焦油所有的图像在一次
我不确定连接是否会起作用,因为它可能看起来不正确:
docker save image1 image2 imag3:tag > docker.tar
我希望得到一个能与数组中任意数量的StringIndex一起工作的答案,所以我不会像这样硬编码:
AllKeywords = ""
for (index in myMap) {
for (img in myMap[index]['keyword']) {
AllKeywords += "${img}"
}
}
sh "docker save AllKeywords[0]:tag AllKeywords[1]:tag > docker.tar"
因为基本上我可以这样做:
sh "docker save myMap[StringIndex0]['keyword']:tag myMap[StringIndex1]['keyword']:tag > docker.tar"
当它们被添加时,这将不再解释StringIndex
我是新来的,所以如果我的问题不清楚,请让我知道,我会尽力解决它
# 1 楼答案
假设你的地图实际上是一幅地图地图,这里有一个选项:
如果
tag
实际上是参数化的,只需将其替换为$tag
(因为这是Groovy,所以有很多替代方案,但这应该能让你达到目的。)
# 2 楼答案
我不熟悉Groovy语法,但下面应该能很好地表达这个想法
您的示例输出还有括号(
[]
),[image1:tag] [image2:tag] ...
,因此您可能需要添加这些括号