我已经阅读了这个论坛的一些问题和答案,但仍未找到我要找的东西。
这里来自curl cmd的回复:
我想获取所有id并将它们存储到数组中,然后使用curl
cmds删除这些ID
[{
"_links": {
"list": {
"href": "http://10.10.10.185:8080/vndfs/lcd/v3/vdfs"
},
"modifyInfo": {
"href": "http://10.10.10.185:8080/vdfs/lcd/v3/vdfs/TEST1-5cda5079a2cb47c28466bc1983f8b2e6"
}
},
"description": "Purple is my color",
"id": "TEST1-5cda5079a2cb47c28466bc1983f8b2e6"
}, {
"_links": {
"list": {
"href": "http://10.10.10.185:8080/vndfs/lcd/v3/vdfs"
},
"modifyInfo": {
"href": "http://10.10.10.185:8080/vdfs/lcd/v3/vdfs/TEST2-5cda5079a2cb47c28466bc1983f8b2e6"
}
},
"description": "Blue is my color",
"id": "TEST2-5cda5079a2cb47c28466bc1983f8b2e6"
}]
getid.sh:
#!/bin/bash
VDF=`curl -s GET http://10.10.10.185:8080/vdfs/lcd/v3/vdfs
VDFSID=`echo $VNF | python -c 'import json,sys; response=json.loads(sys.stdin.read()); print response[0]["id"]'`
echo $VDFSID
来自echo的输出:
TEST1-5cda5079a2cb47c28466bc1983f8b2e6
但我希望获取所有ID并将其存储到数组中,然后我可以删除每个TEST1-XX
和TEST2-XXX
id
for i in response['id']:
curl -XDELETE http://10.10.10.185:8080/vdfs/lcd/v3/vdfs/$i
对此有何建议?提前谢谢。
答案 0 :(得分:1)
您可以将jq
JSON解析器与xarg
一起使用,将结果注入curl
:
curl -s -X GET http://10.10.10.185:8080/vdfs/lcd/v3/vdfs | \
jq -r ' .[] | .id ' | \
xargs -I {} curl -X DELETE http://10.10.10.185:8080/vdfs/lcd/v3/vdfs/{}
这会从您的JSON数组中提取id
并使用网址http://10.10.10.185:8080/vdfs/lcd/v3/vdfs/<ID>
您还可以使用jsontool
解析JSON(使用npm安装):
curl -s -X GET http://10.10.10.185:8080/vdfs/lcd/v3/vdfs | \
json -a id | \
xargs -I {} curl -X DELETE http://10.10.10.185:8080/vdfs/lcd/v3/vdfs/{}