Java 在Linux上执行grep命令并捕获结果
我试图使用以下java代码在linux上执行grep命令,但无法捕获输出。我的输出总是为空Java 在Linux上执行grep命令并捕获结果,java,linux,jakarta-ee,grep,Java,Linux,Jakarta Ee,Grep,我试图使用以下java代码在linux上执行grep命令,但无法捕获输出。我的输出总是为空 Process p; String output = null; try { String command = "grep searchString filename.txt"; System.out.println("Running command: " + command); p = Runtim
Process p;
String output = null;
try {
String command = "grep searchString filename.txt";
System.out.println("Running command: " + command);
p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
if (null != output) {
while ((output = br.readLine()) != null)
System.out.println(output);
}
p.waitFor();
System.out.println("exit: " + p.exitValue());
p.destroy();
} catch (Exception e) {
e.printStackTrace();
}
如何捕获输出?
是否有任何第三方库或更好的方法在linux上执行命令并捕获输出?
在执行if check时,尚未分配输出。更改代码,如下所示:
Process p;
String output = null;
try {
String command = "grep searchString filename.txt";
System.out.println("Running command: " + command);
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((output = br.readLine()) != null) {
System.out.println(output);
// Process your output here
}
System.out.println("exit: " + p.exitValue());
p.destroy();
} catch (Exception e) {
e.printStackTrace();
}
下一次@PM77-1可能重复,请在标记为重复之前花一秒钟阅读问题。OP的问题与执行系统命令无关。在分配任何值(除了null
)之前,您说的是if(null!=output){
)因此,由于此时output
为null
,因此您永远不会调用readLine
。如果使用Eclipse之类的IDE,它会告诉您类似“此时此变量只能是null
”在youif
statement…@MarkoTopolnik-我链接的问题的公认答案正是OP需要的(不管问题本身).对不起,我没有正确地理解你..事实上我之前的代码也有一些业务逻辑代码..我现在删除了..但删除后我想.你的代码和我的代码看起来完全一样…请解释一下,如果我遗漏了什么…我必须尝试执行这个urs代码吗?不,我没有尝试过.但是很明显,如果块不能放在除了尝试删除p.destroy()之外
并在处理后关闭BufferedReader
实例。还要确保您的命令在shell上打印输出。此命令可能不会返回任何内容。是的…我在执行命令之前和运行同一命令时使用了sysout命令。它的打印输出在shell上,但不使用java程序…不确定出了什么问题:(查看一些示例,应该会有所帮助。