首頁  >  文章  >  Java  >  使用 Java 運行時執行 Shell 腳本時如何有效重定向輸出?

使用 Java 運行時執行 Shell 腳本時如何有效重定向輸出?

Susan Sarandon
Susan Sarandon原創
2024-10-24 08:24:29613瀏覽

How to Effectively Redirect Output When Executing Shell Scripts using Java's Runtime?

使用Java 的Runtime 執行具有重定向輸出的Shell 腳本

當嘗試使用Java 的Runtime.exec() 方法執行shell 腳本時,輸出重定向可能無法如預期運作。當重定向運算子 >> 時,就會出現此問題。在腳本中使用。

問題:

Process p = Runtime.getRuntime().exec("sh somescript.sh >> out.txt");

儘管腳本成功執行,但輸出不會重定向到指定檔案以及檔案本身將保持未建立狀態。

解:

要有效地重新導向輸出,需要利用Java 的ProcessBuilder 類別:

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

說明:說明:

透過使用ProcessBuilder,您可以獨立設定stdout 和stderr 流的重新導向。該redirectOutput()和redirectError()方法可讓您指定一個檔案進行輸出重新導向。

請注意,如果檔案「out.txt」不存在,它將自動建立。如果已經存在,現有內容將被覆蓋。

以上是使用 Java 運行時執行 Shell 腳本時如何有效重定向輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn