2
我想從Scala產生一個進程(SBT),以及兩個作爲參數傳遞的SBT命令。我做了sbt.sh
shell腳本(的Manual Installation in sbt Documentation簡化版本):bash與帶命令行參數的scala.sys.process.Process
java -jar /home/bob/sbt/sbt/bin/sbt-launch.jar "[email protected]"
如果工作正常,當我調用腳本從Ubuntu的一個bash提示符(/home/bob/workingdir
是工作目錄):
~/sbt.sh "project Foo" "run"
然而,我想用一段代碼在Scala程序中調用它:
val pseq = Seq("/home/bob/sbt.sh", "\"project Foo\"", "\"run\"")
val pb = scala.sys.process.Process(pseq, new java.io.File("/home/bob/workingdir"))
pb.!
SBT啓動並正常加載,然後以下錯誤輸出失敗:
[error] Expected key
[error] "project Foo"
[error]^
它在Windows 8上正常工作,但在Ubuntu 12.10上失敗。我的pseq
曾經是一個普通的String
與完整的bash命令。我變成了Seq
爲了得到明確的參數拆分(而不是在任何空間,即使在引號內)。
任何人都可以指出兩個調用之間有什麼區別,或者我做錯了什麼?