Я хотел бы извлечь имена репозиториев и их размер после получения списка всех репозиториев в битбакете с использованием API через сценарий оболочки. Команда, которую я использую для этого,
repo_list=$(cat repo.json | jq '.[] | .slug ' | sed 's/"//g')
repo.json содержит:
{
"pagelen":100,
"size":494,
"values":[
{
"scm":"git",
"website":"",
"fork_policy":"no_public_forks",
"full_name":"org_name/ecomm-dist-cache",
"name":"ecomm-dist-cache",
"language":"java",
"created_on":"2014-11-18T19:01:25.741787+00:00",
"mainbranch":{
"type":"branch",
"name":"master"
},
"workspace":{
"slug":"org_name",
"type":"workspace",
"name":"Org Name ",
"uuid":"{xxxxxxxxxxxxx}"
},
"has_issues":true,
"updated_on":"2018-06-06T22:17:02.947496+00:00",
"size":105095621,
"type":"repository",
"slug":"ecomm-dist-cache",
"is_private":true,
"description":"Initial Migration of ecomm-dist-cache"
},
{
"scm":"git",
"website":"",
"full_name":"org_name/mqfte_ecommoutboundtransfertoweddingchannel",
"name":"MQFTE_ECOMMOutboundTransferToWeddingChannel",
"language":"",
"mainbranch":{
"type":"branch",
"name":"master"
},
"workspace":{
"slug":"org_name",
"type":"workspace",
"name":"Org Name ",
"uuid":"{xxxxxxxxxxxxx}"
},
"has_issues":false,
"size":99549,
"type":"repository",
"slug":"mqfte_ecommoutboundtransfertoweddingchannel",
"is_private":true,
"description":""
}
],
"page":1,
"next":"https://api.bitbucket.org/2.0/repositories/org_name? pagelen=100&page=2"
}
Сообщение об ошибке, которое я получаю,
Cannot index number with string "slug"
Ожидаемый результат
ecomm-dist-cache
mqfte_ecommoutboundtransfertoweddingchannel
Вы отметили jq
, поэтому я предполагаю, что вы хотите проанализировать содержимое JSON, что означает, что действительно необходим правильный файл JSON.
@Inian Я предоставил правильный файл JSON.
jq -r '.values[].slug' repo.json
-r удалит кавычки, поэтому нет необходимости передавать sed.
можно ли получить несколько значений в одной строке? например, ecomm-dist-cache — 105095621 mqfte_ecommoutboundtransfertoweddingchannel — 99549 slug — размер
Укажите действительный JSON, а не ваш. Заходите на jsonlint.com