#!/bin/bash set -eu args=() for url in "$@" do case $url in https://*|git://*) dir=${url#*//} dir=${dir%/*} ;; ssh://*) dir=${url#ssh://} dir=${dir#*@} ;; git@*) dir=${url#git@} dir=${dir/://} dir=${dir%/*} ;; *) args+=("$url") continue esac [[ $dir ]] || { echo >&2 no directory; exit 1;} h=${dir%%:*} [[ $h != $dir ]] && dir=$h/${dir#*/} mkdir -vp ~/src/"$dir" cd ~/src/"$dir" git clone --verbose --progress "${args[@]}" "$url" args=() done