2012-02-25 11 views
13

Voglio eseguire il mio processo da scala, con diverse variabili di ambiente modificate. Ad esempio:Modifica della variabile di ambiente per un processo con scala.sys.process?

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

e $ asdf impostato su un valore. C'è un modo per farlo da scala?

EDIT:

Il più vicino ho avuto modo finora:

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() 

Ma questo è brutto.

+0

BTW, Si può fare, proprio come si fa in Java: 'importazione java.util._' ' Runtime.getRuntime() exec ("echo $ PATH") ' –

+0

@ om-nom-nom. Puoi omettere parens. In effetti, vedi 'sys.runtime'. –

risposta

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

Vedere Process.

+1

Per la prima volta, la mia risposta è più lunga della risposta di Sobral che duplica. Ironia della sorte, questa risposta risponde più precisamente a ciò che probabilmente la domanda duplicata stava cercando di porre. http://stackoverflow.com/a/18411947/1296806 –

+0

@ som-snytt Questa è stata una mia risposta piuttosto scarsa. Mi vergogno! :) –

+0

Ho provato questo e non funziona, cerca di interpretare "echo $ asdf" come un eseguibile - dà 'bash: echo $ asdf: Niente file o directory '. – elias

Problemi correlati