2016-11-29 55 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 ]