2011-11-21 8 views
5

tengo este archivo bash:El paso de un sistema de propiedad separada por espacios a través de un script de shell no funciona

#/bin/bash 

PROP="-Dprop=foo bar" 

java $PROP -jar Foo.jar 

Por lo tanto, lo que quiero hacer aquí es pasar una lista separada por espacios como una propiedad del sistema . Pero esto de alguna manera no funciona:

Caused by: java.lang.ClassNotFoundException: bar 

Por lo tanto, parece que Bash rompe -Dprop=foo bar arriba en -Dprop=foo, bar. Intenté todo, desde hacer una cita doble hasta escapar del personaje espacial, pero parece que nada funciona.

Respuesta

13

Es necesario añadir las comillas alrededor de la cáscara de la escritura variable $:

PROP="-Dprop=foo bar" 

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

+1 Gracias, funcionó como un encanto. ¡Totalmente olvidado de esto! – helpermethod

+2

sí ... tuve que volver y experimentar con esto yo mismo ... los escapes de concha pueden ser un gran dolor en el trasero. –

+2

¿Qué tal pasar múltiples propiedades del sistema a través de la misma variable de shell? – AlexBrand

-1

PROP Try = -Dprop = "foo bar" O usted podría hacer

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

No creo esto funcionará Creo que le dará caracteres literales dobles en el valor de la propiedad. –

+0

@StephenC: no. Hay un nivel de expansión durante la substición en la línea de comando aquí: 'java $ PROP -jar Foo.jar' – sehe

+0

@sehe - ¿lo has probado? –

Cuestiones relacionadas