2012-02-25 20 views
13

Quiero ejecutar mi proceso desde scala, con varias variables de entorno modificadas. Por ejemplo:¿Variable de entorno modificable para un proceso con scala.sys.process?

Seq("bash","echo $asdf") ! 

y $ asdf establecido en algún valor. ¿Hay alguna manera de hacer esto desde Scala?

EDIT:

Lo más cerca que llegué a él hasta ahora:

val pb = new java.lang.ProcessBuilder("bash","echo $asdf") 
pb.environment.put("asdf","value") } 
val p = pb.start() 
io.Source.fromInputStream(p.getInputStream).getLines.toList.foreach(println) 
p.waitFor() 

Pero esto es feo.

+0

Por cierto, usted puede hacerlo igual que lo hacen en Java: '' java.util._' importación Runtime.getRuntime() exec ("echo $ PATH") ' –

+0

@ om-nom-nom. Puedes omitir los parens. De hecho, vea 'sys.runtime'. –

Respuesta

15
Process(Seq("bash", "-c", "echo $asdf"), None, "asdf" -> "Hello, world!").! 

Ver Process.

+1

Por primera vez, mi respuesta es más larga que la respuesta de Sobral que duplica. Irónicamente, esta respuesta responde con mayor precisión a lo que probablemente intentaba hacer la pregunta duplicada. http://stackoverflow.com/a/18411947/1296806 –

+0

@ som-snytt Esta fue una respuesta bastante pobre mía. ¡Me avergüenza! :) –

+0

Intenté esto y no funciona, intenta interpretar "echo $ asdf" como un ejecutable - da 'bash: echo $ asdf: No hay tal archivo o directorio'. – elias

Cuestiones relacionadas