翻滚吧--少年 发表于 2013-2-3 11:27:59

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
页: [1]
查看完整版本: windows下通过Runtime.getRuntime().exec.()执行linuxshell脚本