2012-02-25 9 views
13

いくつかの環境変数を変更して、私のプロセスをscalaから実行したい。たとえば、scala.sys.processを持つプロセスの環境変数を変更しますか?

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

と$ asdfを値に設定します。スカラーからこれを行う方法はありますか?

EDIT:

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

しかし、これは醜いです:私はこれまでのところへ持って

最も近いです。

+0

あなたはJavaで行うと同じようにところで、あなたはそれを行うことができます。 '輸入java.util._' ' Runtime.getRuntime()のexec( "エコーの$ PATH") ' –

+0

OM-NOM-NOM @。括弧を省略することはできます。実際は 'sys.runtime'を参照してください。 –

答えて

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

Processを参照してください。

+1

初めての私の答えは、それが複製するSobralの回答よりも長くなっています。皮肉なことに、この答えは、重複した質問がおそらく聞こうとしていたものにもっと正確に答えます。 http://stackoverflow.com/a/18411947/1296806 –

+0

@ som-snyttこれは私の答えがかなり悪かった。私には恥ずべき! :) –

+0

私はこれを試して、それは動作しません、それは "echo $ asdf"を実行可能ファイルとして解釈しようとします - 'bash:echo $ asdf:No such file or directory'を返します。 – elias

関連する問題