我希望在迭代json对象时过滤它,并对输出中的每个项运行curl命令。
JSON对象。
{
"repo": "releases",
"path": "/apps/releases",
"created": "2021-04-01T10:12:23.496-01:00",
"children": [
{
"uri": "/Image1",
"folder": true,
"created": 2022-08-09T17.12.22.987.04.000
},
{
"uri": "/Image2",
"folder": true,
"created": 2022-06-10T10.12.22.412.10.000
},
{
"uri": "/Image3",
"folder": true,
"created": 2022-10-10T07.03.14.742.01.000
},
{
"uri": "/Image4",
"folder": true,
"created": 2022-10-10T07.010.11.542.08.000
}
]
}
寻找一些逻辑,这些逻辑将迭代通过children下的uri,并作为$i通过curl命令传递,即Image 1、Image 2和Image 3。
curl -k -s --user user:password -X GET "https://artifactory.com/api/releases/baseimage/${i}"
当我运行下面的命令时,输出如下
for i in $(curl -k -s --user user:password -X GET "https://artifactory.com/api/releases/baseimage/" | jq -c ".children[] |.uri)
输出:["/图像1”、“/图像2”、“/图像3”]
我尝试了以下命令,但在输出中,它只将${i}替换为Image 3,不知何故,它没有使用Image 1和Image 2。
for i in $(curl -k -s --user user:password -X GET "https://artifactory.com/api/releases/baseimage/" | jq -r ".children[] |.uri); do curl -k -s --user user:password -X GET "https://artifactory.com/api/releases/baseimage/${i}"; done
我尝试了以下命令,但在输出中,它只将${i}替换为Image 3,不知何故,它没有使用Image 1和Image 2。
2条答案
按热度按时间unftdfkk1#
curl
可以读取要从文件中获取的URL,您可以使用jq
生成该文件。只需要一个
curl
进程来获取所有单独的图像,并且不需要shell循环。1l5u6lss2#
您可能会发现,沿着以下代码行构造
for
循环更容易: