현재 ProcessBuilder를 사용하여 Java 서버에서 명령을 실행 중입니다. 이 서버는 오래된 Perl 서버를 대체하기위한 것이고 많은 레거시 코드는 플랫폼 특정 명령 행을 지정합니다.Java에서 untokenized 명령 행 실행
command -option "hello world"
및 유닉스에 그것을 할 수 있습니다 : 예를 들어
를, 그것을 할 수있는 창에
command -option 'hello world'
문제는 ProcessBuilder를하고 Runtime.exec의 모두가 (토큰 화 된 명령 줄에 걸릴 것입니다 유닉스와 윈도우 모두에 대해 { "command", "-option", "hello world"}).
나는 플랫폼 독립적 인 방법을 선호하지만 우리는 코드베이스에서 3 천만 라인의 perl 코드 범위를 가지고 있습니다. 나는 다른 플랫폼을위한 토크 나이저를 쓰지 않고 (큰 문제가 아니라, 단지 WTF를 만들고 싶지 않다.), 운영 체제의 쉘이 명령 행을 토큰 화하도록하는 방법이 있는가?
'명령 - 옵션에 "Hello World"'유닉스에 작품뿐만 아니라 따옴표는 따옴표입니다 ... – akuhn
우리의 코드는 Windows와 Unix에서 조건부로 처리합니다. 대개 명령이 그보다 복잡하고 중첩 된 따옴표와 명령 행 변수 및 기타 그런 말도 안되기 때문입니다. – tster
3 천만 줄의 perl?!? 나는 당신이 아니므로 매우 기쁩니다;) – Fantius