如何添加"&&"在buildbot中的shell命令行?

时间:2014-08-14 12:43:33

标签: shell command-line buildbot

我需要使用"&&"一步执行多个命令所以我创建工厂如下:

f1 = factory.BuildFactory()
f1.addStep(shell.ShellCommand, command=["sh", "-c", "pwd", "&&", "cd", "/home/xxx/yyy", "&&", "pwd"])

但是在执行过程中发现buildbot处理如下,这使得无法执行

sh -c pwd '&&' cd /home/xxx/yyy '&&' pwd

我的期望

sh -c pwd && cd /home/xxx/yyy && pwd

有人可以帮我解决这个问题吗?感谢。

1 个答案:

答案 0 :(得分:3)

因为你正在使用/bin/sh,所以只需用一个字符串调用它:

f1.addStep(shell.ShellCommand, command="pwd && cd /home/xxx/yyy && pwd")

正如文件所说:

  

ShellCommand参数是:

     

命令

     

一个字符串列表(首选)或单个字符串(不鼓励),它指定要运行的命令。首选字符串列表   因为它可以直接用作argv数组。使用单一   string(带有嵌入空格)需要buildslave传递   字符串到/ bin / sh用于解释,它引发了各种各样的问题   关于如何逃避或解释shell的疑难问题   元字符。

不推荐使用,但仍然需要shell,因为&&仅在shell中解释。拨打sh只是多余的。