Ausführen von Shell-Skripten mit umgeleiteter Ausgabe mithilfe der Java-Runtime
Beim Versuch, Shell-Skripte mit der Runtime.exec()-Methode von Java auszuführen, wird die Ausgabe Die Umleitung funktioniert möglicherweise nicht wie vorgesehen. Dieses Problem tritt auf, wenn der Umleitungsoperator >> wird im Skript verwendet.
Problem:
Process p = Runtime.getRuntime().exec("sh somescript.sh >> out.txt");
Trotz der erfolgreichen Ausführung des Skripts wird die Ausgabe nicht in die angegebene Datei und die Datei selbst umgeleitet bleibt nicht erstellt.
Lösung:
Um die Ausgabe effektiv umzuleiten, ist es notwendig, die ProcessBuilder-Klasse von Java zu nutzen:
ProcessBuilder builder = new ProcessBuilder("sh", "somescript.sh"); builder.redirectOutput(new File("out.txt")); builder.redirectError(new File("out.txt")); Process p = builder.start(); // may throw IOException
Erläuterung:
Durch die Verwendung von ProcessBuilder können Sie die Umleitung von stdout- und stderr-Streams unabhängig voneinander konfigurieren. Mit den Methoden „redirectOutput()“ und „redirectError()“ können Sie eine Datei für die Ausgabeumleitung angeben.
Beachten Sie, dass die Datei „out.txt“ automatisch erstellt wird, wenn sie nicht existiert. Wenn es bereits vorhanden ist, wird der vorhandene Inhalt überschrieben.
Das obige ist der detaillierte Inhalt vonWie kann die Ausgabe beim Ausführen von Shell-Skripten mithilfe der Java-Runtime effektiv umgeleitet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!