我正在构建一个脚本来一次下载所有CodeCommit存储库。
REPOS=$(aws codecommit list-repositories)
echo $REPOS | jq -r '.[]' | while read name ; do
git clone XXX
done
在第一行中,我得到了所有的repos JSON如下:
[
{
"repositoryName": "repo_a",
"repositoryId": "XXXXXX"
},
{
"repositoryName": "repo_b",
"repositoryId": "XXXXXX"
},
{
"repositoryName": "repo_c",
"repositoryId": "XXXXXX"
},
{
"repositoryName": "repo_d",
"repositoryId": "XXXXXX"
}
]
我需要简单的迭代这个json,以获得属性repositoryName并为每个仓库执行git clone。
但是在这个例子中,命令jq -r '.[]'
不起作用。这会在每次重复时返回整个json。
3条答案
按热度按时间vsdwdz231#
输出:
或者不加引号:
输出:
dz6r00yl2#
我发现问题了……此命令:
返回一个json,如下所示:
我没有考虑jq中的“repositories”字段。
这个脚本现在运行良好:
感谢您的支持。祝你有个美好的一天:)
tez616oj3#
如果你想迭代JSON值而不是单个字段值,你可以使用
-c
选项,这样你就可以每行得到一个JSON元素: