来自bash脚本的Git克隆

时间:2012-06-01 20:35:59

标签: git bash ssh git-clone

我正在尝试自动化与Git构建脚本的交互,我遇到了以下问题。

这可以从命令行开始:

git clone git@github.xxxx.com:blablabla/reponame.git /Users/myname/dev/myfolder

现在我想做同样的事情,但是从我的剧本开始。我有以下内容:

#/bin/bash

repository="git@github.xxxx.com:blablabla/reponame.git"

localFolder="/Users/myname/dev/myfolder"

git clone $repository" "$localFolder

给了我这个错误

  

GitHub SSH访问暂时不可用(0x09)。致命:远程端意外挂断

对此非常感激

1 个答案:

答案 0 :(得分:19)

你的意思是git clone "$repository" "$localFolder",我希望?

运行git clone $repository" "$localFolder是完全不同的:

  • 因为两个变量都不在双引号内,所以它们的内容是字符串拆分和全局扩展的;因此,如果它们包含空格(通常是$IFS内的字符),它们可以成为多个参数,如果它们包含globs(*[...]等),那么这些参数可以被替换带有文件名(如果启用了nullglob shell选项,则只需从生成的参数列表中删除)
  • 由于引用了两个参数之间的空格,因此在传递给git之前,它们会合并为一个参数。

因此,对于您提供的值,此脚本运行的内容为:

git clone "git@github.xxxx.com:blablabla/reponame.git /Users/myname/dev/myfolder"

......与

完全不同
git clone git@github.xxxx.com:blablabla/reponame.git /Users/myname/dev/myfolder

...因为它将/Users/myname/dev/myfolder路径作为网址的一部分。