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
我正在 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