6

我想从我的 groovy 脚本中执行 shell 命令。我测试了以下内容:

"mkdir testdir".execute()

这很好用。现在我想创建一个文件,向文件中写入一些内容,然后打开文本编辑器来查看文件。

def execute(cmd) {
   def proc =  cmd.execute()
   proc.waitFor()
}

execute("touch file")
execute("echo hello > file")
execute("gedit file")

现在 gedit 可以正确打开,但文件中没有“hello”字符串。这是如何工作的?!?

4

1 回答 1

6

您不能在该行中进行重定向:

execute("echo hello > file")

所以没有任何东西被写入文件。处理此问题的最简单方法可能是将所有命令包装到单个 shell 脚本中,然后执行此脚本。

echo否则,您可以从命令中读取标准输出(不带> file),然后在 Groovy 中将其写给file自己。

或者你可以这样做:

execute( [ 'bash', '-c', 'echo hello > file' ] )

哪个应该起作用,因为您的execute方法只会执行List.execute()方法

于 2012-09-20T12:54:30.233 回答