问题描述
{
"list": [
{
"expand": "xx","id": "xxxxx","self": "https","key": "test-11","fields": {
"field_1": "1234"
}
},{
"expand": "xx","key": "test-10","fields": {
"field_1": "1235","field_2": null
}
}
]
}
我正在尝试使用IFS while循环读取值:
cat test.json| jq -r '[.list[]| ([.key]|tostring) + "," + "\(.fields| .field_1)"]|@tsv' \
| while IFS="," read -r key field_1; do
echo "$key $field_1"
curl -s https ://thisistest.com/api/$key/$field_1
done;
echo output displays only: test-11
我想获取key
和field_1
的值,以便在curl
请求中使用它们。
解决方法
@Kev中带有注释的jq
命令将提取所需的值,每对每行,如下所示:
> jq -r '.list[]|[.key,.fields.field_1]|@tsv' test.json
test-11 1234
test-10 1235
您可以在此处修改脚本,以每个值对提出curl
个请求。
#!/bin/bash
while read -r key field_1; do
echo curl -s https://thisistest.com/api/$key/$field_1
done < <( jq -r '.list[]|[.key,.fields.field_1]|@tsv' test.json )
如果测试没问题,请删除echo
。