2011-11-21 21 views
5

動作しないシェルスクリプトを経由して、スペース区切りのシステムプロパティを渡す:私は、このbashのファイル持って

#/bin/bash 

PROP="-Dprop=foo bar" 

java $PROP -jar Foo.jar 

そうに、私はここで何をしたいシステムプロパティとしてスペース区切りのリストを渡すことです。しかし、これは何とか動作しません:

Caused by: java.lang.ClassNotFoundException: bar 

だから、バッシュアップ-Dprop=foobar-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:nope。ここでコマンドラインに代入する際には、拡張レベルがあります: 'java $ PROP -jar Foo.jar' – sehe

+0

@sehe - あなたはそれを試しましたか? –

関連する問題