這個問題在這里已經有了答案: bash腳本回圈通過鎖定步驟中的兩個變數 2答案 4 小時前關閉。
我正在使用 curl 命令從應用程式獲取 json 資料
示例 curl 回應
{
"count": 2,
"value": [
{
"id": 344,
"name": "ip-172-20-94-68",
"status": "offline",
},
{
"id": 345,
"name": "ip-172-20-95-119",
"status": "offline",
}
]
}
我的 bash 腳本
ipAddresses=$(curl -s -X GET "$hostUrl" -u :"$EncodedPAT" | jq -r ".value[] | select(.status==\"offline\").name")
ids=$(curl -s -X GET "$hostUrl" -u :"$EncodedPAT" | jq -r ".value[] | select(.status==\"offline\").id")
for ipAddress in "${ipAddresses[@]}"
do
for id in "${ids[@]}"
do
echo "ipAddress: ${ipAddress} id: ${id}"
done
done
輸出
ipAddress: ip-172-20-94-68
ip-172-20-95-119
ip-172-20-95-113
ip-172-20-94-96
ip-172-20-94-86
id: 344
345
346
348
350
所以看起來它只遍歷最外層回圈一次,而不是遍歷內部回圈(只使用第一個元素)。
預期產出
ipAddress: ip-172-20-94-68 id: 344
ipAddress: ip-172-20-95-119 id: 345
ipAddress: ip-172-20-95-113 id: 346
ipAddress: ip-172-20-94-96 id: 348
ipAddress: ip-172-20-94-86 id: 350
我在網上找過其他地方,但找不到任何相關的東西。
有什么可能是錯的嗎?
uj5u.com熱心網友回復:
您可以將其組合成一個jq稱呼:
.value[] | select(.status == "offline") | "ipAddress: \(.name) id: \(.id)"
給出:
"ipAddress: ip-172-20-94-68 id: 344"
"ipAddress: ip-172-20-95-119 id: 345"
在線 JqPlay 演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/526553.html
標籤:重击卷曲jq
