Scala: ejecución de procesos externos, escape de cadenas y errores

Quiero ejecutar el siguiente comando:

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

como herramienta de edición del Process en Scala. Usé ambos:

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

y:

val proc = Process( cmd )                                                  
proc !!

Y en ambos casos recibo errores de lynx:

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

El comando ejecutar solo funciona bien, cuando lo ejecuto en Scala, obtengo errores. Lo que significa que algo extraño sucede entre Scala y lynx, y las cadenas no se interpretan correctamente... ¿Alguna idea?

preguntado el 31 de julio de 12 a las 11:07

Qué es cmd? Que es filename? Que es a? -

Lo siento por eso. a era un artefacto de empuje, y el código fue cortado y pegado, así que tenía esas extrañas variables (editadas) -

1 Respuestas

supongo que te pusiste cmd a una cadena. !! luego divide la cadena en cada carácter de espacio para obtener los argumentos para pasar a lynx, sin preocuparse por su ' personajes.

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

Respondido 31 Jul 12, 12:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.