有谁知道如何将 linux grep 与 java ProcessBuilder 一起使用?为什么这段代码应该返回 "sing" 时返回一个空字符串?
import java.io.*;
import java.util.*;
public class Test2 {
public static void main(String[] args) throws InterruptedException,IOException{
String line;
// Initiate grep process.
ProcessBuilder pb = new ProcessBuilder("grep", "\"sing\"", "<<<\"sing\"");
Process p = pb.start();
p.waitFor();
// Get grep output:
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
StringBuilder builder = new StringBuilder();
line = null;
while ( (line = reader.readLine()) != null) {
builder.append(line);
builder.append(System.getProperty("line.separator"));
}
String result = builder.toString();
System.out.println(result);
}
}
我也尝试回显我用这段代码执行的内容:
ProcessBuilder pb = new ProcessBuilder("echo","grep", "\"sing\"", "<<<\"sing\"");
并得到正确的结果:
grep "sing" <<<"sing"
我终于尝试在 shell 上执行命令并得到:
sing
虽然由于某种原因它是红色字体。那么我做错了什么?