Java 具有多个字符串参数的Bash脚本

Java 具有多个字符串参数的Bash脚本,java,string,bash,Java,String,Bash,我在分离两个字符串变量作为bash脚本的参数时遇到问题。我的bash脚本采用如下两个参数: #!/bin/bash DATA1=$1 DATA2=$2 然而,DATA1和DATA2并不是我想要的,因为bash错误地读取了我的字符串。DATA2只是我想输入的参数的第一部分,因为我很难将一个复杂(相对)的字符串转换成单个参数 我使用如下变量从Java应用程序调用此脚本: String m1 = "some data"; String m2 = "some more"+mystring+"eve

我在分离两个字符串变量作为bash脚本的参数时遇到问题。我的bash脚本采用如下两个参数:

#!/bin/bash


DATA1=$1
DATA2=$2
然而,DATA1和DATA2并不是我想要的,因为bash错误地读取了我的字符串。DATA2只是我想输入的参数的第一部分,因为我很难将一个复杂(相对)的字符串转换成单个参数

我使用如下变量从Java应用程序调用此脚本:

String m1 = "some data";
String m2 = "some more"+mystring+"even more data"+anotherstring;


myscript.sh  m1 m2

在bash脚本中,只有m2的第一部分被传递给DATA1。我试着用单引号和双引号把整个东西包装起来,但我不能让它接受整个m2作为第二个参数

非常感谢您对创建两个字符串参数的任何帮助。

这对我很有用,请参阅:

Runtime.getRuntime().exec(new String[]{"/bin/sh", "/tmp/myscript.sh", m1,m2});

您的代码调用:
Runtime.getRuntime().exec(字符串)

它调用方法
exec(command,null,null)
(参见src.zip中的源代码)

StringTokenizer的方法exec(String命令,String[]envp,File dir)解析命令。因此,文本
“一些数据”
“一些数据”
被拆分为
一些
数据(或
“一些
数据”

对我有效,请参见:

Runtime.getRuntime().exec(new String[]{"/bin/sh", "/tmp/myscript.sh", m1,m2});

您的代码调用:
Runtime.getRuntime().exec(字符串)

它调用方法
exec(command,null,null)
(参见src.zip中的源代码)


StringTokenizer的方法exec(String命令,String[]envp,File dir)解析命令。因此,文本
“一些数据”
“一些数据”
被拆分为
一些
数据(或
“一些
数据”

我认为问题更可能出现在Java端而不是Bash端。如何启动脚本?必须显示用于从Java调用脚本的确切代码(
Runtime.exec()
?,
ProcessBuilder
?),包括设置参数的代码。否则我们只是猜测。m2的第一部分传递给DATA1?你的意思是m2的第一部分被传递到DATA2吗?我认为问题更可能出现在Java端而不是Bash端。如何启动脚本?必须显示用于从Java调用脚本的确切代码(
Runtime.exec()
?,
ProcessBuilder
?),包括设置参数的代码。否则我们只是猜测。m2的第一部分传递给DATA1?你的意思是m2的第一部分被传递给DATA2吗?