Я вызываю p = Runtime.getRuntime(). Exec (command) на Java 1.8. Команда вызывает Баш скрипт следующим образом:Java getRuntime Exec
#!/bin/bash
args=("[email protected]")
cat /home/user/Downloads/bigtext.txt | grep ${args[0]}
выше Баш скрипт отлично работает, когда вызывается с помощью командной строки. Когда вызывается в моем приложении Java с помощью exec(), я не получаю вывод CAT. он, кажется, не прошел мимо p.waitFor(); Где я иду не так?
Если я запускаю команду напрямую, например, «ls -alF», все работает так, как ожидалось.
$ java -version java version "1.8.0_31" Java(TM) SE Runtime Environment (build 1.8.0_31-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
String tmp = "/home/user/search "+input;
System.out.println(tmp); // /home/user/search sometextarg
String woa = executeCommand(tmp);
private String executeCommand(String command) {
StringBuilder output = new StringBuilder();
BufferedReader reader = null;
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
Насколько велик 'bigtext.txt'? Для чего вы хотите? –
его текстовый файл 136 Мб – DevilCode