通过shell脚本传递空格分隔的系统属性不起作用

我有这个bash文件:

#/bin/bash PROP="-Dprop=foo bar" java $PROP -jar Foo.jar 

所以,我想在这里做的是将空格分隔的列表作为系统属性传递。 但这不知何故不起作用:

 Caused by: java.lang.ClassNotFoundException: bar 

所以,似乎Bash打破了-Dprop=foo bar up -Dprop=foobar 。 我尝试了从双引号到逃避空间角色的一切,但似乎没有任何效果。

您需要在shell脚本$ variable周围添加引号:

 PROP="-Dprop=foo bar" java "$PROP" -jar Foo.jar 

如果属性值中有多个值的空格,请按如下所示设置属性;

 PROP="-Dprop=foobar" PROP="$PROP -DpropTwo='hello world'" java "$PROP" -jar Foo.jar 

尝试PROP = -Dprop =“foo bar”或者你可以做

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