我正在努力使一个简单的sed命令在使用ShellCommand的构建步骤中运行。我的命令是:
ShellCommand(['sed', util.Interpolate('s/@@VERSION@@/%(prop:version)s/', 'linux/pre.spec', '>', 'linux/post.spec')]
我希望看到:
sed s/@@VERSION@@/1.2.2.5/ linux/pre.spec > linux/post.spec
但是日志显示它正在运行:
sed s/@@VERSION@@/1.2.2.5/ linux/pre.spec '>' linux/post.spec
它会显示以下错误:
sed: can't read >: No such file or directory
sed: can't read linux/post.spec: No such file or directory
请注意,ShellCommand已在流重定向周围添加了反引号,这导致sed将其视为输入文件,从而导致失败。我尝试过:
ShellCommand(util.Interpolate('sed s/@@VERSION@@/%(prop:version)s/ linux/pre.spec > linux/post.spec))
这可以正常工作,但是buildbot文档说不要使用单个字符串,而是使用单独的参数。我还需要添加存储在变量中的可配置路径,然后文档又说不可能混合使用字典插值法和位置样式插值法,因此我必须坚持使用单独的参数。
反正有ShellCommand不添加反引号吗?