此问题在此处已有答案:
bash script loop through two variables in lock step(2个答案)
9天前关闭。
我正在使用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
我在网上找过其他地方,但很难找到任何相关的东西。
有没有可能是哪里出了问题?
1条答案
按热度按时间dtcbnfnu1#
您可以将这些组合成一个jq调用:
提供:
Online JqPlay Demo(第一次)