2016-11-29 59 views
1

我從竹在Windows機器上使用下面的代碼克隆庫竹:bash腳本不工作在Mac竹子,但在Windows

cd ${bamboo.build.working.directory} 
IF EXIST devops (
    cd devops 
    git pull 
) ELSE (
    git clone https://myDevops:[email protected]/myInfo/devops 
) 

這將導致回購的成功克隆是我正在努力獲得。但現在我試圖在Mac上克隆回購,而不是Windows機器。我已經改變了猛砸,以便它沒有錯誤運行到這一點:

cd ${bamboo.build.working.directory} 
if [exist devops]; then 
    cd devops 
    git pull 
else 
    git clone clone https://myDevops:[email protected]/myInfo/devops 
fi 

但現在我在日誌中收到此消息:

[exist: command not found 

而在Windows上,它會在顯示此日誌:

C:\bamboo-home\xml-data\build-dir\THE-BLD-KEY>IF EXIST devops (
cd devops 
    git pull 
) ELSE (git clone https://myDevops:[email protected]/myInfo/devops) 

我不知道爲什麼在Mac上找不到消息命令。我原來的代碼段相同,但由於語法錯誤,我將Mac改爲現在的版本。爲什麼它不能得到命令?

+0

'['是bash命令:空白是'['和'exist'之間強制性的(前提是'exist'存在作爲命令)。 – mouviciel

回答

4

你的語法確實不正確。你可以使用if [ -d devops ] ; then但可以使用cd返回代碼在同一行做的比這更好的(和測試,如果devops是一個目錄,可以CHD」進)

cd devops 2>/dev/null && git pull || git clone https://myDevops:[email protected]/myInfo/devops 

編輯:chepner表明,如果git pull失敗,它調用git clone所以我的答案在這方面不完善。

建議替換的一行將仍使用if

if cd devops 2>/dev/null; then git pull; else git clone https://myDevops:[email protected]/myInfo/devops; fi 
+0

不要使用'&& ... ||'作爲適當if語句的快捷方式。如果'git pull'失敗,'git clone'將會運行。 – chepner

+0

@chepner。我心情不好。你有什麼建議? –

+0

'如果cd devops 2>/dev/null;然後git拉;否則git克隆...; fi'。爲正確編輯 – chepner

2

人的bash:

-d文件 真,如果文件存在且是一個目錄。

所以,你必須使用:[ -d devops ]