我正在做一项简单的工作,将我的 java 参数从 shell 传递到 java,并且其中一个参数恰好有空格。
./test.ksh -test param1 param2 "\"param3 with spaces\""
test.ksh 中的代码
if [ "$1" = "-test" ]
then
echo "Test"
SCRIPT_ARG="${*}"
echo "${SCRIPT_ARG}"
fi
java -jar test.jar ${SCRIPT_ARG}
但是在java代码中,第三个参数被读取并打印为
"param3
看起来很简单,但这里缺乏想法
最佳答案
参数是一个字符串列表,但您可以将它们连接成一个字符串,然后按空格重新拆分。
相反,不要连接它们,而是将它们作为字符串列表进行处理:
#!/usr/bin/ksh
if [ "$1" = "-test" ]
then
echo "Test"
script_arg=( "${@}" )
for i in "${script_arg[@]}"
do
echo "One of the arguments is: $i"
done
fi
java -jar test.jar "${script_arg[@]}"
然后您应该运行它:
./test.ksh -test param1 param2 "param3 with spaces"
并且不要尝试嵌入更多引号。
关于java - 将带空格的字符串从 shell 传递到 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40984714/