2014-01-24 202 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)';它更短並描述操作。 –