【问题标题】:Git clone from bash script从 bash 脚本克隆 Git
【发布时间】:2012-06-07 02:13:50
【问题描述】:

我正在尝试自动化我与 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)。致命:远端意外挂断

对此的任何启示将不胜感激

【问题讨论】:

  • 你的意思是git clone "$repository" "$localFolder",我希望?否则,您要求将两个变量的内容进行字符串拆分和全局扩展,然后将拆分前者产生的最右边的参数和拆分后者产生的最左边的参数组合成一个带空格的参数他们之间......这似乎是一件非常愚蠢的事情。
  • 所以,是的,我正在做的傻事。非常感谢!
  • @CharlesDuffy:我认为您应该将其添加为答案,以免在搜索等方面看起来像未回答的问题。
  • @MarkLongair 我认为结束这个问题比这更有意义——这不太可能帮助其他人——但看起来没有其他人支持我。
  • 我不知道 $a" "$b 会做什么,所以即使问题很简单,但答案是有道理的

标签: git bash ssh git-clone


【解决方案1】:

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

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

  • 因为两个变量都不在双引号内,所以它们的内容是字符串拆分和全局扩展的;因此,如果它们包含空格(通常是 $IFS 中的字符),它们可以成为多个参数,如果它们包含 glob(*[...] 等),这些参数可以用文件名替换(或简单地删除从生成的参数列表中,如果启用了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 路径作为 URL 的一部分。

【讨论】:

    猜你喜欢
    • 2013-08-04
    • 2017-02-09
    • 1970-01-01
    • 2019-06-07
    • 2020-10-06
    • 2018-02-20
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多