Java 具有多个字符串参数的Bash脚本
我在分离两个字符串变量作为bash脚本的参数时遇到问题。我的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
#!/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吗?