2012-05-14 36 views
0

我egrep的运行使用Java的Runtime.exec()egrep的失败而在壳成功

String command = "egrep \'(Success|Loading\\.\\.\\.|Loaded : READY|Found a running instance)\' "+ instance.getPath() + "/log"; 
Runtime.getRuntime().exec(command); 

的标准输出始终是零和标准错误显示“egrep的:无与伦比(或(”但是当我复制命令shell并运行,它返回正确的值

+0

需要mo es逃跑! –

回答

1

的解决方案是非常简单的。? (Success|Loading\\.\\.\\.|Loaded不是有效的正则表达式。

使用Process.exec(String)时,无法用引号保护空格。总是使用取数组的exec()版本,甚至更好使用ProcessBuilder

这样,您可以将每个参数作为单个Java字符串传递,而空格和其他特殊字符不会产生任何问题。

+0

解决。非常感谢! – user1393256

0

单引号不应该逃脱你不要逃避他们在命令行上,要么,你