Bash 脚本不适用于 Mac 上的竹子,但适用于 windows 上的竹子

Bash script not working for bamboo on Mac but is for bamboo on windows

我正在 windows 机器上使用以下代码从 Bamboo 克隆存储库:

cd ${bamboo.build.working.directory}
IF EXIST devops (
    cd devops
    git pull
) ELSE (
    git clone https://myDevops:MyGithub@github.com/myInfo/devops
)

这将导致成功克隆我试图获取的存储库。但现在我正试图在 Mac 而不是 windows 机器上克隆 repo。我已经更改了 Bash 以便它 运行 不会出现错误:

cd ${bamboo.build.working.directory}
if [exist devops]; then 
    cd devops
    git pull
 else 
    git clone clone https://myDevops:MyGithub@github.com/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:MyGithub@github.com/myInfo/devops)

我不知道为什么 Mac 上找不到消息命令。我最初的代码片段是相同的,但由于语法错误,我将 Mac 更改为现在的样子。为什么它不能得到命令存在?

男人bash:

-d file True if file exists and is a directory.

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

您的语法确实不正确。您可以使用 if [ -d devops ] ; then 但您可以使用 cd return 代码(并测试 devops 是否是一个目录并且可以进入)

cd devops 2>/dev/null && git pull || git clone https://myDevops:MyGithub@github.com/myInfo/devops

编辑:chepner 建议如果 git pull 失败它会调用 git clone 所以我的回答在这方面是不完善的。

建议的替换单线仍将使用 if:

if cd devops 2>/dev/null; then git pull; else git clone https://myDevops:MyGithub@github.com/myInfo/devops; fi