【发布时间】:2016-12-05 22:43:34
【问题描述】:
我正在做一个简单的工作,将我的 java 参数从 shell 传递到 java,其中一个参数恰好有空格。
./test.ksh -test param1 param2 "\"param3 带空格\""
test.ksh 中的代码
if [ "$1" = "-test" ]
then
echo "Test"
SCRIPT_ARG="${*}"
echo "${SCRIPT_ARG}"
fi
java -jar test.jar ${SCRIPT_ARG}
但在 java 代码中,第三个参数被读取并打印为
"参数3
看起来很简单,但是这里没有思路
【问题讨论】:
-
将带空格的字符串直接传递给java没有问题:
java <classname> "abc def" "ghi" -
这实际上比看起来更棘手,但它在这里得到了回答(不是公认的答案;查看第二个或其他答案):stackoverflow.com/a/8723305/719547
-
试试
java -jar test.jar "param with spaces"或者只是将 ${SCRIPT_ARG} 括在空格中:java -jar test.jar "${SCRIPT_ARG}"