【发布时间】:2014-03-31 14:35:29
【问题描述】:
拥有一个 shell 脚本,该脚本又运行一个 java 程序。 脚本调用如下:
./script.sh 1 2 3 4 "ab cd"
第 5 个 shell 参数(ab cd)必须作为 java 系统属性传递,我正在做的是:
JAVA_OPTS="-Xmx512M -Dlog4j.defaultInitOverride=true"
if [ "$5" ] ; then
JAVA_OPTS="$JAVA_OPTS -Dconfig.path=$5"
fi
然后,运行 java (JAVA_EXE & CP 有合适的值) :
$JAVA_EXE $JAVA_OPTS -classpath $CP com.foo.Main
收到此错误:
Error: Could not find or load main class cd
如果通过 "abcd" 而不是 "ab cd" 一切正常。
如果传递内联,只需用引号将值括起来:
java -Xmx512M -Dconfig.path="ab cd" com.foo.Main
当必须使用变量时会出现问题。
我应该如何正确传递包含空格的参数?
【问题讨论】: