日期:2014-05-16  浏览次数:20770 次

windows下通过Runtime.getRuntime().exec.()执行linuxshell脚本

执行Runtime.getRuntime().exec("ps -ef|grep indexer");

一直抛ERROR: Unsupported SysV option.

?

于是便去就按照这个error信息去百度、google找答案,未果。。。

?

看到网上相关问题解决方法(如下),我尝试Runtime.getRuntime().exec("eval ps -ef|grep indexer");

再次失败。。。抓狂中。。。

?

CMND="ps -ef"

$CMND

是可以正常执行地。

?

CMND="ps -ef|grep sshd"

$CMND

就会得到上面的错误了。

因为 "ps -ef|grep sshd" 不会被再次解析,管道符失效。

?

eval $CMND

这样就可以再解析一次。

PS:注意单引号,双引号,转义。

?

后经高人指点,恍然大悟。。。

linux下:

?

String[] command = { "/bin/sh", "-c", cmmd };

Process ps = Runtime.getRuntime().exec(command?);

windows下:

?

String[] command = { "cmd", "/c", cmmd };

Process ps = Runtime.getRuntime().exec(command?);

?

总结:没有抓住问题的关键,除了通过ERROR去找解决方法外,还可以通过问题本身或参考相关问题的解决方法。

相关文章:

1.http://bzhang.iteye.com/blog/407846

2.http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=1