从bash中的GitHub url中提取存储库名称

鉴于任何GitHub仓库urlstring像:

git://github.com/some-user/my-repo.git 

要么

 [email protected]:some-user/my-repo.git 

要么

 https://github.com/some-user/my-repo.git 

bash从以下任何string中提取存储库名称my-repo的最佳方法是什么? 该解决scheme必须适用于上面指定的所有types的url。

谢谢。

 $ url=git://github.com/some-user/my-repo.git $ basename=$(basename $url) $ echo $basename my-repo.git $ filename=${basename%.*} $ echo $filename my-repo $ extension=${basename##*.} $ echo $extension git 

我会去basename $URL .git

加起来:

  • 获取没有(可选)后缀的url:

     url_without_suffix="${url%.*}" 
  • 获取存储库名称:

     reponame="$(basename "${url_without_suffix}")" 
  • 之后获取用户(主机)名称:

     hostname="$(basename "${url_without_suffix%/${reponame}}")" 

使用正则expression式:/([ /([^/]+)\.git$/