2011-11-21 30 views
5

çalışmayan bir kabuk komut dosyası üzerinden bir boşlukla ayrılmış Sistem Mülkiyet Geçme:Bu bash dosyası var

#/bin/bash 

PROP="-Dprop=foo bar" 

java $PROP -jar Foo.jar 

Yani, burada yapmak istediğim şey bir sistem Mülkiyet gibi bir boşlukla ayrılmış listesini iletmek olduğunu . Ama bu şekilde çalışmaz:

Caused by: java.lang.ClassNotFoundException: bar 

Yani, Bash kadar -Dprop=foo, bar içine -Dprop=foo bar kırar gibi görünüyor. Çifte alıntıdan boşluk karakterinden kaçmak için her şeyi denedim ama hiçbir şey işe yaramıyor gibi görünüyor.

cevap

13

yapabilirdi:

PROP="-Dprop=foo bar" 

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

+1 Teşekkürler, çekicilik gibi çalıştı. Bunu tamamen unutmuştum! – helpermethod

+2

yep .. geri dönüp kendimle deney yapmam gerekti ... kabuk çıkması popoda böyle bir acı olabilir. –

+2

Birden çok sistem özelliğini aynı kabuk değişkeninden geçirmeye ne dersiniz? – AlexBrand

-1

deneyin PROP = -Dprop = "foo bar" Yoksa sen kabuk komut dosyası $ değişkeni tırnak işareti eklemeniz gerekir

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

sanmıyorum bu çalışacak. Ben mülkiyet değerinde size gerçek çift tırnak karakterleri verecektir düşünüyorum. –

+0

@StephenC: nope. Alt satırda komut satırına bir genişletme seviyesi vardır: java $ PROP -jar Foo.jar' – sehe

+0

@sehe - denediniz mi? –