apakah ada yang tahu cara menggunakan linux grep dengan Java ProcessBuilder? Mengapa kode ini mengembalikan string kosong padahal seharusnya mengembalikan "bernyanyi"?
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);
}
}
Saya juga mencoba mengulangi apa yang saya jalankan dengan kode ini:
ProcessBuilder pb = new ProcessBuilder("echo","grep", "\"sing\"", "<<<\"sing\"");
dan dapatkan hasil yang benar:
grep "sing" <<<"sing"
Saya akhirnya mencoba menjalankan perintah di Shell dan mendapatkan:
sing
meskipun fontnya merah karena alasan tertentu. Jadi apa yang saya lakukan salah?
<<<
memberitahu shell untuk meneruskan apa pun yang berikut sebagai aliran input ke grep. Kode ProcessBuilder Anda memperlakukan simbol aliran masukan sebagai argumen lain. - person Brian   schedule 31.01.2015