Ich rufe Befehlszeilenprogramme auf, die über Pipes verbunden sind. All das funktioniert sicher unter Linux.Java exec() gibt das erwartete Ergebnis der verbundenen Befehle der Pipes nicht zurück
Meine Methode:
protected String execCommand(String command) throws IOException {
String line = null;
if (command.length() > 0) {
Process child = Runtime.getRuntime().exec(command);
InputStream lsOut = child.getInputStream();
InputStreamReader r = new InputStreamReader(lsOut);
BufferedReader in = new BufferedReader(r);
String readline = null;
while ((readline = in.readLine()) != null) {
line = line + readline;
}
}
return line;
}
Wenn ich etwas Katze Aufruf der Datei | grep asd, ich bekomme das erwartete Ergebnis. Aber nicht alle Befehle funktionieren korrekt. Zum Beispiel mit diesem:
cat /proc/cpuinfo | wc -l
oder dies:
cat /proc/cpuinfo | grep "model name" | head -n 1 | awk -F":" '{print substr($2, 2, length($2))}
die Methode null zurück. Ich vermute, dieses Problem hängt von der Ausgabe Formatierung Befehle wie Kopf, Schwanz, WC, etc. Wie kann ich umgehen dieses Problem und das Endergebnis der Ausgabe erhalten?
Useless (verwendet * 3) von 'cat'. –
@Dennis - tatsächlich. Gut beobachtet! –
@Bobby Ich habe es versucht, das hilft nicht. – Pawka