我想在迭代時過濾 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 并通過 curl 命令作為 $i 傳遞的邏輯,這將是 Image1、Image2 和 Image3。
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)
輸出:[“/Image1”,“/Image2”,“/Image3”]
我嘗試了以下命令,但在輸出中它只用 Image3 替換了 ${i},不知何故它沒有采用 Image1 和 Image2。
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
我嘗試了以下命令,但在輸出中它只用 Image3 替換了 ${i},不知何故它沒有采用 Image1 和 Image2。
uj5u.com熱心網友回復:
curl可以讀取 URL 以從檔案中獲取,您可以使用jq. 就像是
base=https://artifactory.com/api/releases/baseimage
curl -k -s --user user:password -X GET "$base/" |
jq -r --arg b "$base" '.children[].uri | "url = \"\($b)/\(.)\""' |
curl -k -s --user user:password -X GET --config -
只需一個curl程序即可獲取所有單獨的影像,并且不需要 shell 回圈。
uj5u.com熱心網友回復:
for您可能會發現按照以下幾行構建回圈更容易:
for uri in $( echo "$json" | jq '.children[].uri') ; do
echo curl ... ${uri}...
done
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/524550.html
標籤:重击卷曲jq
