-PR-
締切済み

javaアプリケーションからコマンド実行結果の取得

  • すぐに回答を!
  • 質問No.143123
  • 閲覧数1396
  • ありがとう数3
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 76% (20/26)

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
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

多分、実行しているシェルがなんであるか、が分かっていないことが原因
でしょう。

$status って、csh 系のシェルにおいて最近のコマンドの終了状態を格納
しておくシェル変数ですから。

実行結果を取得したいだけであれば、パイプを使わなくとも Process に
該当するメソッドがあります。

こんな感じ。

Process proc = Runtime.getRuntime().exec(new String("cat error.log"));
proc.waitFor();
System.out.println(proc.exitValue());
お礼コメント
yuyama

お礼率 76% (20/26)

ありがとうございます。
そのようですね。
いろんなことを一緒に考えてしまいました。

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

ですね。
投稿日時 - 2001-10-08 21:32:52


このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-

特集


専門家があなたの悩みに回答!

ピックアップ

ページ先頭へ