我有这个 bash 文件:
#/bin/bash
PROP="-Dprop=foo bar"
java $PROP -jar Foo.jar
因此,我想要在这里做的是将空格分隔的列表作为系统属性传递。但这不知何故行不通:
Caused by: java.lang.ClassNotFoundException: bar
因此,Bash 似乎将
-Dprop=foo bar
分解为 -Dprop=foo
、bar
。我尝试了从双引号到转义空格字符的所有方法,但似乎没有任何效果。
您需要在 shell 脚本两边添加引号
$PROP
扩展:
PROP="-Dprop=foo bar"
java "$PROP" -jar Foo.jar
对于多个属性:
PROP="-Dprop1=foo bar"
PROP2="-Dprop2=bing bong"
java "$PROP" "$PROP2" -jar Foo.jar
(如果有更好的方法来处理多个属性的情况......确实有效......请在下面评论。)
尝试 PROP=-Dprop="foo bar" 或者你也可以这样做
PROP="-Dprop=\"foo bar\""
如果属性值有多个值时有空格,请按如下方式设置属性;
PROP="-Dprop=foobar"
PROP="$PROP -DpropTwo='hello world'"
java "$PROP" -jar Foo.jar