Java からの Linux シェル コマンドの呼び出し: 詳細な説明
Java 内から Linux コマンドを実行しようとする場合、そのコマンドを理解することが重要です。シェル固有のコマンドの微妙な違いと Java ランタイムとの互換性環境.
課題: リダイレクトとパイプを使用したコマンドの実行
Process p = Runtime.getRuntime().exec("shell command") を使用した最初の試行は失敗します。リダイレクトまたはパイプを処理します。これは、exec() がシステム シェルと直接統合されていないためです。
解決策: シェル「プロキシ」を利用する
リダイレクトとパイプを使用してシェル コマンドを実行するには、 「シェル プロキシ」アプローチを利用できます。これには、中間ステップとして使用するシェルの指定が含まれます。
実装:
exec() を次のものに置き換えます:
Process p = Runtime.getRuntime().exec(new String[]{"csh", "-c", "cat /home/narek/pk.txt"});
Inこの例では、「csh」はコマンド「cat」を解釈するために使用されるシェル プロキシです。 /home/narek/pk.txt".
追加メモ:
csh の使用で問題が発生した場合は、代わりに bash をシェル プロキシとして使用することを検討してください:
Process p = Runtime.getRuntime().exec(new String[]{"bash", "-c", "ls /home/XXX"});
以上がJava からリダイレクトとパイプを使用して Linux シェル コマンドを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。