Javaの外部コマンド呼び出しでパイプやリダイレクト付きのコマンドを実行する

UNIXコマンドをJavaから実行する場合、java.lang.Runtimeクラスのexecメソッドを使うと外部コマンドとして実行してくれます。
ところがパイプやリダイレクトが入っていると実行してくれません。
こんな時「sh」や「ssh」も一緒にコマンドに含むと実行してくれます。

それぞれの書き方はこんな感じです。

// シェルの場合
String[] shCmd = {"sh", "-c", "コマンド"};
// セキュアシェルの場合
String[] sshCmd = {"ssh", "ホスト名", "-l", "ユーザー名", "コマンド"};
// リモートシェルの場合
String[] rshCmd = {"rsh", "ホスト名", "-l", "ユーザー名", "コマンド"};
// Windowsの場合
String[] winCmd = {"cmd", "/c", "コマンド"};

「-c」オプションは、シェルの入力として解釈させる文字列を渡すためのオプションです。

あんま使いどころないかもしれないですけどね(;^_^A