如何使用jq遍历JSON数组提取CodeCommit仓库名实现批量克隆?
问题原因
你当前使用的jq -r '.[]'只会把数组中的每个完整JSON对象逐行输出,没有单独提取repositoryName属性;同时你调用echo $REPOS时没有给变量加双引号,会导致JSON内容丢失换行符,引发jq解析异常。
修正方案
修改后的完整可用脚本如下:
REPOS=$(aws codecommit list-repositories) echo "$REPOS" | jq -r '.[] | .repositoryName' | while read repo_name ; do # 替换<REGION>为你对应的AWS区域,如cn-northwest-1、us-east-2 git clone https://git-codecommit.<REGION>.amazonaws.com/v1/repos/${repo_name} # 若使用SSH克隆,替换为如下格式即可 # git clone ssh://git-codecommit.<REGION>.amazonaws.com/v1/repos/${repo_name} done
适配默认AWS输出格式
如果你没有对AWS CLI的返回结果做过自定义裁剪,默认返回的JSON外层会包含repositories键,此时只需调整jq表达式即可:
echo "$REPOS" | jq -r '.repositories[] | .repositoryName' | while read repo_name ; do # 克隆逻辑同上 done
内容的提问来源于stack exchange,提问作者Milton Bertachini
相关产品推荐
相关产品推荐

