OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

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

  • すぐに回答を!
  • 質問No.143123
  • 閲覧数1374
  • ありがとう数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( ...続きを読む
多分、実行しているシェルがなんであるか、が分かっていないことが原因
でしょう。

$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で解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ