我正在尝试在groovy中执行shell命令。命令为diff <(ls dir1) <(ls dir2)
。从shell开始,这很好,但是当我在groovy中"diff <(ls dir1) <(ls dir2)".execute()
时,我收到一个shell错误,说diff: extra operand
。我似乎无法在groovy中找出正确的语法。有人可以指出我做错了吗?
答案 0 :(得分:2)
如果您可以像在命令行上那样通过bash
调用此方法,那么shell调用的语法是:
def p = ["/bin/bash", "-c", "diff <(ls dir1) <(ls dir2)"].execute()
p.waitFor()
println p.text
您不能简单地运行上面代码的原因:execute()
只执行一个简单的流程。所以你只能运行命令并传递参数。所以例如'diff file1 file1'.execute()
会奏效。但是<(...)
是bash-代表“创建一个命名管道”。但是你可以使用-c
param向任何(?)shell传递一个“命令”来执行它,这样你就可以利用shell的强大功能。在我的例子中将它作为一个字符串数组调用,可以通过引用/转义所有内容来保存你的hastle。