【发布时间】:2012-10-08 14:34:02
【问题描述】:
我是 Scala 初学者,我正在编写一个用于调用 shell 命令的包装器。目前我正在尝试使用来自指定目录的管道调用 shell 命令。
为了实现这一点,我编写了简单的实用程序:
def runCommand(command: String, directory: File): (Int, String, String) = {
val errbuffer = new StringBuffer();
val outbuffer = new StringBuffer();
//run the command
val ret = sys.process.Process(command, directory) !
//log output and err
ProcessLogger(outbuffer append _ + "\n", outbuffer append _ + "\n");
return (ret, outbuffer.toString(), errbuffer.toString());
}
但是使用此实用程序我不能使用管道,例如:
runCommand("ps -eF | grep -i foo", new File("."));
首先我认为管道是shell的功能,所以我尝试了“/bin/sh -c ps -eF | grep -i foo”,但似乎管道右侧的表达式被忽略了。
我还尝试使用 !语法(sys.process._ 包),但我不知道如何从指定目录调用命令(不使用“cd”)。
您能否建议我,如何正确执行此操作?
【问题讨论】:
-
@xhochy 好的。我删除了评论,这样任何人都不会意外使用它。 :)
标签: scala