如何在scala中执行命令?

时间:2013-12-06 06:48:00

标签: scala

我想执行此命令“dot -Tpng overview.dot> overview.png”,用于通过Graphviz生成图像。

scala中的代码:

Process(Seq("dot -Tpng overview.dot > overview.png"))

它不起作用。 我还想在scala中打开这个图像。我在Ubuntu下工作。默认情况下,图像查看器将打开图像。但是我在终端输入“eog overview.png”,报告错误

** (eog:18371): WARNING **: The connection is closed

因此,我不知道如何让scala打开这张图片。

提前致谢。

1 个答案:

答案 0 :(得分:4)

您无法在命令字符串中使用stdout重定向>。您应该使用#>#|运算符。请参阅processdocumentation中的示例。

这会将test写入test.txt

import scala.sys.process._
import java.io.File

// use scala.bat instead of scala on Windows
val cmd = Seq("scala", "-e", """println(\"test\")""") #> new File("test.txt")
cmd.!

在你的情况下:

val cmd = "dot -Tpng overview.dot" #> new File("overview.png")
cmd.!

或者只是这个(因为dot接受输出文件名为-ooutfile):

"dot -Tpng overview.dot -ooverview.png".!