Scala:执行外部进程,字符串转义和错误

时间:2012-07-31 10:51:47

标签: scala lynx

我想执行以下命令:

lynx -useragent='Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1' -source 'http://localhost'

作为Scala中的Process。我用过两者:

val cmd = ... // command to execute
cmd #> new java.io.File( filename ) !

val proc = Process( cmd )                                                  
proc !!

在这两种情况下,我都会从lynx收到错误:

Can't Access `file://localhost/home/me/Work/23.lynx/2.multidownload/(X11;'
Alert!: Unable to access document.

单独运行命令运行良好,当我在Scala中运行它时 - 我收到错误。这意味着Scala和lynx之间发生了一些奇怪的事情,字符串没有被正确解释......有什么想法吗?

1 个答案:

答案 0 :(得分:7)

我猜您将cmd设置为String。 !!然后在每个空格字符处拆分字符串以获取传递给lynx的参数,而不是关心你的'个字符。

import scala.sys.process._

val cmd = Seq("lynx",
              "-useragent='Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1'",
              "-source" "http://localhost")
val out = cmd.!!