我正在编写我的第一个 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
这里的这一行,我希望它给我一个名为toolkit
or的文件夹sms
,因此在位置扭曲中的之后/
和之前,但它正在选择。我猜,因为这是在之后。.
git@github
.
我怎样才能让它在存储库中选择名称?
答案1
答案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
# ...