我想执行以下命令:
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
之间发生了一些奇怪的事情,字符串没有被正确解释......有什么想法吗?
答案 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.!!