java调用linux命令的奇怪问题,求解决
java调用linux脚本,输入cmd为"qmgr -c \"set queue old acl_users+=wd_tony\""
程序输出rcmd为:/bin/sh -c "qmgr -c \"set queue old acl_users+=wd_tony\""
诡异的是我直接拷贝输出的rcmd值到linux下,没有任何问题。
但是,程序执行的话,会报这样的错误:
-c: line 0: unexpected EOF while looking for matching `"'
-c: line 1: syntax error: unexpected end of file
我实在是想不到哪里会有问题,恳请大家帮忙,多谢了。
代码如下:
public static String executeLinuxCmd(String cmd) {
String rcmd ="/bin/sh -c "+cmd;
System.out.println(rcmd);
Runtime run = Runtime.getRuntime();
try {
Process process = run.exec(rcmd);
InputStream in = process.getInputStream();
InputStream err = process.getErrorStream();
BufferedReader bs = new BufferedReader(new InputStreamReader(in));
BufferedReader bs1 = new BufferedReader(new InputStreamReader(err));
String lineStr;
while ((lineStr = bs.readLine()) != null)
System.out.println(lineStr);// 打印输出信息
while ((lineStr = bs1.readLine()) != null)
System.out.println(lineStr);// 打印输出信息
in.close();
bs.close();
bs1.close();
process.destroy();
int value = process.waitFor();
System.out.println(value);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}