2012-07-31 31 views
1

欲執行以下命令:Scala中:在執行外部進程,串逸出,和錯誤

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

什麼是'cmd'?什麼是'filename'?什麼是'a'? – 2012-07-31 12:57:58

+0

對不起。 '了'是從* VIM *神器,並且代碼被剪切和粘貼,所以我有這些奇怪的變量(編輯) – 2012-07-31 13:49:25

回答

6

我猜你設置cmd爲String。 !!然後分割每個空格字符的字符串以獲取參數傳遞給l,,而不是關心您的'字符。

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.!! 
+0

謝謝,它的工作原理(*有*'''各地用戶代理參數) – 2012-07-31 11:18:59

+0

心連心,編輯.... – 2012-07-31 11:30:53

相關問題