2011-11-21 14 views
5

ho questo file bash:Passando uno spazio separato sistema di proprietà tramite uno script di shell non funziona

#/bin/bash 

PROP="-Dprop=foo bar" 

java $PROP -jar Foo.jar 

Quindi, quello che voglio fare qui è passare un elenco separato da spazi come una proprietà di sistema . Ma questo in qualche modo non funziona:

Caused by: java.lang.ClassNotFoundException: bar 

Così, sembra che Bash si rompe -Dprop=foo bar fino in -Dprop=foo, bar. Ho provato di tutto, dalla doppia citazione alla fuga dal personaggio dello spazio, ma nulla sembra funzionare.

risposta

13

È necessario aggiungere le virgolette attorno alla shell script di $ variabile:

PROP="-Dprop=foo bar" 

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

+1 Grazie, ha funzionato come un fascino. Totalmente dimenticato di questo! – helpermethod

+2

sì ... dovevo tornare indietro e sperimentare da solo ... le fughe di conchiglie possono essere un tale dolore nel sedere. –

+2

Che ne dici di passare più proprietà di sistema attraverso la stessa variabile di shell? – AlexBrand

-1

Prova PROP = -Dprop = "foo bar" Oppure si potrebbe fare

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

Non credo questo funzionerà. Penso che ti darà letterali caratteri a doppia virgola nel valore della proprietà. –

+0

@StephenC: no. C'è un livello di espansione durante la sottostrizione nella riga di comando qui: 'java $ PROP -jar Foo.jar' – sehe

+0

@sehe - l'hai provato? –

Problemi correlati