前端之家收集整理的这篇文章主要介绍了
Java运行时进程不会“Grep”,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在java程序中从命令行执行一些命令,看来它不允许我使用“grep”?我通过删除“grep”部分测试了这个,命令运行得很好!
我的代码不起作用:
String serviceL = "someService";
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("chkconfig --list | grep " + serviceL);
有效的代码:
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("chkconfig --list");
为什么是这样?是否有某种正确的方法或解决方法?我知道我可以解析整个输出,但我会发现从命令行更容易完成.谢谢.
最佳答案
你正在尝试使用管道,这是外壳的一个
功能…你没有使用外壳;你直接执行chkconfig过程.
简单的解决方案是执行shell并让它完成所有事情:
Process proc = rt.exec("/bin/sh -c chkconfig --list | grep " + serviceL);
那就是说……为什么你要用油管吹?只需阅读chkconfig的输出并在java中自己进行匹配.