ホームページ > Java > &#&チュートリアル > Java のランタイムを使用してシェル スクリプトを実行するときに出力を効果的にリダイレクトする方法は?

Java のランタイムを使用してシェル スクリプトを実行するときに出力を効果的にリダイレクトする方法は?

Susan Sarandon
リリース: 2024-10-24 08:24:29
オリジナル
693 人が閲覧しました

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

Java のランタイムを使用してリダイレクトされた出力でシェル スクリプトを実行する

Java の Runtime.exec() メソッドを使用してシェル スクリプトを実行しようとすると、出力リダイレクトが意図したとおりに機能しない可能性があります。この問題は、リダイレクト演算子 >> が使用されている場合に発生します。

問題:

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 のランタイムを使用してシェル スクリプトを実行するときに出力を効果的にリダイレクトする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート