bash脚本不工作在Mac竹子,但在Windows
问题描述:
我从竹在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改为现在的版本。为什么它不能得到命令?
答
你的语法确实不正确。你可以使用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
答
人的bash:
-d文件 真,如果文件存在且是一个目录。
所以,你必须使用:[ -d devops ]
'['是bash命令:空白是'['和'exist'之间强制性的(前提是'exist'存在作为命令)。 – mouviciel