我在将两个字符串变量分隔为bash脚本的参数时遇到问题。我的bash脚本有两个参数:
#!/bin/bash
DATA1=$1
DATA2=$2
但是,DATA1和DATA2不是我想要的,因为bash错误地读取了我的字符串。 DATA2只是我想要放入的参数的第一部分,因为我在将一个复杂的(相对)字符串变成一个单独的arguemnt时遇到了麻烦。
我从Java应用程序调用此脚本,其变量如下:
String m1 = "some data";
String m2 = "some more"+mystring+"even more data"+anotherstring;
myscript.sh m1 m2
只有m2的第一部分传递给bash脚本中的DATA1。我试过用单引号和双引号来包装整个东西我不能让它接受整个m2作为第二个参数。
赞赏创建两个字符串参数的任何帮助。
答案 0 :(得分:0)
它对我有用,请参阅:
Runtime.getRuntime().exec(new String[]{"/bin/sh", "/tmp/myscript.sh", m1,m2});
您的代码致电:Runtime.getRuntime().exec(String)
它调用方法exec(command,null,null)
(请参阅src.zip中的源代码)exec(String command, String[] envp, File dir)。
方法exec(String命令,String [] envp,File dir)由StringTokenizer解析命令。因此,文字"some data"
或"\"some data\""
会分为some
data
(或"some
data "
)