2011-11-21 4 views
5

작동하지 않는 쉘 스크립트를 통해 공백으로 구분 된 시스템 속성을 전달 :내가이 bash는 파일이

#/bin/bash 

PROP="-Dprop=foo bar" 

java $PROP -jar Foo.jar 

그래서를, 내가 여기서 뭘 원하는 시스템 속성으로 공백으로 구분 된 목록을 통과하다 . 그러나 이것은 어떻게 든 작동하지 않습니다

Caused by: java.lang.ClassNotFoundException: bar 

그래서, 배쉬가 -Dprop=foo, bar-Dprop=foo bar 나누기 것으로 보인다. 나는 큰 따옴표에서 공백 문자를 벗어나는 모든 것을 시도했지만 아무것도 작동하지 않는 것 같다.

답변

13

할 수있는 :

PROP="-Dprop=foo bar" 

java "$PROP" -jar Foo.jar 
+0

+1 감사합니다. 매력처럼 작동했습니다. 이것에 대해 완전히 잊었습니다! – helpermethod

+2

옙 .. 돌아 가야하고 이것으로 직접 실험 해 봐야했다. 쉘 탈출은 엉덩이에 그렇게 고통 스러울 수있다. –

+2

동일한 쉘 변수를 통해 여러 시스템 특성을 전달하는 것은 어떻습니까? – AlexBrand

-1

해보십시오 PROP = -Dprop = "foo는 바"또는 당신은 쉘 스크립트 $ 변수 주위에 따옴표를 추가 할 필요가

PROP="-Dprop=\"foo bar\"" 
+2

나는 생각하지 않는다 이 작동합니다. 나는 그것이 속성 값에 당신에게 문자 그대로 큰 따옴표 문자를 줄 것이라고 생각합니다. –

+0

@StephenC : 아니요. 여기에 커맨드 라인으로 대체 할 때 확장 레벨이 있습니다 :'java $ PROP -jar Foo.jar' – sehe

+0

@sehe - 시도해 보셨습니까? –