- 締切済み
javaアプリケーションからコマンド実行結果の取得
javaアプリケーションからcatコマンドを実行し、その結果を取得したいのですが、うまくいきません。runtime.exec()実行中にエラーとなります。 String cmd = "cat error.log; echo $status"; Runtime runtime = Runtime.getRuntime; Process process = runtime.exec(cmd); rshを使うとOKです。 "rsh localhost cat error.log; echo $status" shを使うとNGです。 "sh -c cat error.log; echo $status" "sh -c \"cat error.log\"; echo $status" ターミナルからは上記で内容取得、および、結果取得はできるのですが。 環境は、UNIX JDK1.2.1です。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- a-kuma
- ベストアンサー率50% (1122/2211)
回答No.1
多分、実行しているシェルがなんであるか、が分かっていないことが原因 でしょう。 $status って、csh 系のシェルにおいて最近のコマンドの終了状態を格納 しておくシェル変数ですから。 実行結果を取得したいだけであれば、パイプを使わなくとも Process に 該当するメソッドがあります。 こんな感じ。 Process proc = Runtime.getRuntime().exec(new String("cat error.log")); proc.waitFor(); System.out.println(proc.exitValue());
お礼
ありがとうございます。 そのようですね。 いろんなことを一緒に考えてしまいました。 String[] cmd = {"rsh","hostname","cat filename;echo $status"}; Process proc = Runtime.getRuntime().exec(cmd); 結果:出力の最終行 String[] cmd = {"cat","filename"}; Process proc = Runtime.getRuntime().exec(cmd); int res = proc.exitValue(); 結果:res ですね。