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

问题描述 投票:0回答:3

我有这个 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
。我尝试了从双引号到转义空格字符的所有方法,但似乎没有任何效果。

java bash
3个回答
17
投票

您需要在 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

(如果有更好的方法来处理多个属性的情况......确实有效......请在下面评论。)


-1
投票

尝试 PROP=-Dprop="foo bar" 或者你也可以这样做

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

-1
投票

如果属性值有多个值时有空格,请按如下方式设置属性;

PROP="-Dprop=foobar"
PROP="$PROP -DpropTwo='hello world'"

java "$PROP" -jar Foo.jar
© www.soinside.com 2019 - 2024. All rights reserved.