java - 将带空格的字符串从 shell 传递到 java

标签 java shell

我正在做一项简单的工作,将我的 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/

相关文章:

linux - x-www-浏览器的兼容性

linux - 采购环境输出

regex - 如何在 shell 脚本中使用正则表达式从 URL 中提取字符串字段值?

java - 当 tomcat 服务器运行时,然后我的 java 类运行

java - 编写安全的 RMI 服务器-客户端应用程序

Java - 泛型类的集合,每个类都有不同的泛型类型

regex - Grep 特定长度的字符

java - 从 ArrayList 中删除对象后出现 ArrayList IndexOutOBoundsException

java - 如何从堆栈中删除某些项目

Linux bash '[: -ge: unary operator expected' 错误