스칼라에서 두 개의 SBT 명령을 인수로 전달하여 프로세스 (그 문제에 대해서는 SBT)를 생성하려고합니다. 그러나bash 대 scala.sys.process.Process with Command Line Arguments
~/sbt.sh "project Foo" "run"
: 나는 (작업 디렉토리 인 /home/bob/workingdir
)를 우분투에서 떠들썩한 파티 프롬프트에서 스크립트를 호출 할 때
java -jar /home/bob/sbt/sbt/bin/sbt-launch.jar "[email protected]"
하면 잘 작동 : 나는 sbt.sh
쉘 스크립트 (Manual Installation in sbt Documentation의 단순화 된 버전)을 만들어 , 다음 코드 조각을 사용하여 스칼라 프로그램에서 호출하고 싶습니다.
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에서는 정상적으로 작동하지만 우분투 12.10에서는 실패합니다. 내 pseq
은 전체 bash 명령을 사용하여 보통 String
이었습니다. 나는 인수를 명시 적으로 (따옴표 안에 어떤 공간이든) 할당하기 위해서 Seq
으로 바뀌었다.
아무도 두 가지 호출의 차이점을 지적하거나 다른 점은 무엇이 잘못 되었습니까?