13

スクリプトを作成する 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)。致命的: リモート エンドが予期せず電話を切りました

これについての光は大歓迎です

4

1 に答える 1

23

つまりgit clone "$repository" "$localFolder"、私は願っていますか?

ランニングgit clone $repository" "$localFolderはまったく違うものです。

  • どちらの変数も二重引用符で囲まれていないため、その内容は文字列分割およびグロブ展開されます。したがって、空白(通常は内の文字$IFS)が含まれている場合は複数の引数になり、グロブ(、など)が含まれている場合は*[...]それらの引数をファイル名に置き換えることができます(または、nullglobシェルの場合は、生成された引数リストから単に削除できます)。オプションが有効になっている)
  • 2つの引数の間のスペースは引用符で囲まれているため、に渡される前に1つの引数に結合され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/myfolderURLの一部としてパスを提供しているため。

于 2012-06-02T11:52:33.160 に答える