bash 脚本选择最后一个路径变量

bash 脚本选择最后一个路径变量

我正在编写我的第一个 bash 脚本。我正在让它安装我在 GitHub 上的所有存储库。

warpInLocations=("[email protected]:acc/toolkit.git" "[email protected]:acc/sms.git" "[email protected]:acc/boogle.git" "[email protected]:acc/cairo.git")

这些是我安装时的。

echo "warping in toolkit, sms, boogle and cairo"
for repo in "${warpInLocations[@]}"
do
  warpInDir=$(echo ${warpToLocation}${repo} | cut -d'.' -f1)
  if [ -d "$warpToLocation"]; then
    echo "somethings in the way.. $warpInDir all ready exists"
  else
    git clone $repo $warpInDir
  fi

done

这里的这一行,我希望它给我一个名为toolkitor的文件夹sms,因此在位置扭曲中的之后/和之前,但它正在选择。我猜,因为这是在之后。.git@github.

我怎样才能让它在存储库中选择名称?

答案1

dir=$(basename [email protected]:acc/toolkit.git .git)

将设置$dirtoolkit.

命令也很有用dirname

答案2

您需要分两步进行:

[email protected]:acc/toolkit.git
dir=${dir#*/}                       # Remove everything up to /
dir=${dir%.*}                       # Remove everything from the .

答案3

在bash中,您还可以使用正则表达式并捕获括号

for repo in "${warpInLocations[@]}"; do
    [[ $repo =~ /([^.]+)\. ]] && dir=${BASH_REMATCH[1]}
    warpInDir=${warpToLocation}$dir
    # ...

相关内容