我需要使用"&&"一步执行多个命令所以我创建工厂如下:
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
有人可以帮我解决这个问题吗?感谢。
答案 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
只是多余的。