Di *_*Liu 5 shell command-line buildbot
我需要使用“ &&”一步执行多个命令。所以我创建工厂如下:
f1 = factory.BuildFactory()
f1.addStep(shell.ShellCommand, command=["sh", "-c", "pwd", "&&", "cd", "/home/xxx/yyy", "&&", "pwd"])
Run Code Online (Sandbox Code Playgroud)
但是在执行过程中,发现buildbot对其进行了如下处理,这使得无法执行
sh -c pwd '&&' cd /home/xxx/yyy '&&' pwd
Run Code Online (Sandbox Code Playgroud)
我所期望的是
sh -c pwd && cd /home/xxx/yyy && pwd
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?谢谢。
由于您/bin/sh无论如何都在使用,只需用一个字符串调用它:
f1.addStep(shell.ShellCommand, command="pwd && cd /home/xxx/yyy && pwd")
Run Code Online (Sandbox Code Playgroud)
正如文档所说:
ShellCommand 参数是:
命令
指定要运行的命令的字符串列表(首选)或单个字符串(不鼓励)。首选字符串列表,因为它可以直接用作 argv 数组。使用单个字符串(带有嵌入的空格)需要 buildslave 将字符串传递给 /bin/sh 进行解释,这引发了关于如何转义或解释 shell 元字符的各种难题。
不推荐这样做,但无论如何您仍然需要 shell,因为&&它只能在 shell 中解释。打电话sh只会是多余的。