引数として渡された 2 つの SBT コマンドと共に、Scala からプロセス (さらに言えば SBT) を生成したいと考えています。シェル スクリプトを作成しました( sbt Documentation の手動インストールsbt.sh
の簡易版):
java -jar /home/bob/sbt/sbt/bin/sbt-launch.jar "$@"
/home/bob/workingdir
Ubuntu の bash プロンプト (作業ディレクトリ)からスクリプトを呼び出すと、正常に動作する場合:
~/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 では失敗します。私は完全なbashコマンドをpseq
使用する普通の人でした。String
引数を明示的Seq
に分割するために (引用符内であっても、任意のスペースではなく) に変更しました。
2つの呼び出しの違い、または私が間違っていることを誰か指摘できますか?