#!/usr/bin/env bash function getListByKey() { json=$1 key=$2 echo $json | grep -Po '"$key":(.+?),' | grep -Po '\d+' } function groupProjects() { groupList='' groupList=$(curl -H "PRIVATE-TOKEN: $pricateToken" https://XgitlabIpX/api/v3/groups) #echo $groupList idList=(`echo $groupList | grep -Po '"id":(.+?),' | grep -Po '\d+'`) nameList=(`echo $groupList | grep -Po '"name":(.+?),' | awk -F '\"' '{print $4}'`) #遍歷 group id list echo "您有 ${#idList[@]} 個分組 " for(( i=0;i<${#idList[@]};i++)) do echo "目錄 ${nameList[i]}" mkdir ${nameList[i]} cd ${nameList[i]} projectsList=$(curl -H "PRIVATE-TOKEN: $pricateToken" https://XgitlabIpX/api/v3/groups/${idList[i]}/projects) sshList=(`echo $projectsList | grep -Po '(ssh)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]'`) for(( j=0;j<${#sshList[@]};j++)) do echo "准備克隆第$[$i+1] 分組下的第$[$j+1] 個項目${sshList[j]}"; git clone ${sshList[j]} done cd .. done; } function allProjects() { allList='' allList=$(curl -H "PRIVATE-TOKEN: $pricateToken" https://XgitlabIpX/api/v3/projects) #echo $groupList sshList=(`echo $allList | grep -Po '(ssh)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]'`) for(( j=0;j<${#sshList[@]};j++)) do echo "准備克隆第$[$j+1] 個項目${sshList[j]}"; git clone ${sshList[j]}; done; } #JNTMcqKTyytmUxRaWwsx echo -e "請輸入你的私密令牌: \n如果沒有,請前往https://XgitlabIpX/ 項目--個人資料設置--個人訪問令牌--創建個人令牌(該令牌再次刷新就無法查看,請記得保存)" #Private token read pricateToken echo $pricateToken while true do #Individual group List echo "下載個人所有項目請輸入1,下載所屬群組下的項目請輸入2" read putKey if [ $putKey = "1" ]; then allProjects break elif [ $putKey = "2" ]; then groupProjects break else echo "請輸入正確的指令" fi done