2014-01-24 167 views
-2

我正在做一个函数,在我的bash配置文件中,克隆git存储库,进入创建的目录和(可选)签出提供的布尔。Bash“cd”命令无法正常工作

的代码是:

# Clone repository from git, enter in it end checkout to provided branch (default master) 
function clone_with_branch() { 
    g clone $1 
    cd "$1" | cut -f 2 -d '/' | cut -f 1 -d '.' 
    if [ "$2" != "null" ]; then 
     g co "$2" 
    fi 
} 

但是,可以说,我在命令行中这样写:

clone_with_branch [email protected]:somepage/someproject.git 

它给我的留言:

bash: cd: [email protected]:somepage/someproject.git: No such file or directory 

任何人都知道什么我做错了?

PS:如果您切换回声(用于测试)cd命令,将打印正确的目录给你...

+7

这是*不太可能*'cd'是 “不正常”。首先想知道你可能做错了什么,而不是每天数以千计的人使用的几十年的工具可能会做错。 – dimo414

+1

'cd'正常工作。它被错误地使用。阅读报告的错误消息。 'bash:cd:>> [email protected]:<< somepage/someproject.git:没有这样的文件或目录。它似乎在说实话。 – user2864740

+0

男人放松,这只是一种说法,我无法得到这个工作...既不认为一个更好的标题...对我来说很好 – Thalescm

回答

3

你试图cd到$ 1,然后的,结果传递给切。你要cd到结果切

cd `echo "$1" | cut -f 2 -d '/' | cut -f 1 -d '.'` 

(注意反引号)

+4

'$(...)'比一对更容易注意到反引号。 – chepner

+0

我设法做到了,完全是这样。我打算把这个放在这里,但你已经做到了。谢啦! – Thalescm

+0

我宁愿为此使用'basename',例如'cd $(basename“$ 1”.git)';它更短并描述操作。 –