JAVAのアプリからLINUXのBASHシェルスクリプトを動かすにはどうすればいいですか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/02/09 16:36:43
  • 終了:--

回答(3件)

id:tonolove No.1

tonolove回答回数158ベストアンサー獲得回数02005/02/09 16:46:08

ポイント10pt

これでいかがでしょうか。

id:dev_zer0 No.2

dev_zer0回答回数332ベストアンサー獲得回数252005/02/09 16:59:56

ポイント30pt

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Runtim...

Runtime (Java 2 $B%W%i%C%H%U%)!<%`(J SE v1.4.0)

(java.lang.String)

ファイルaaaを削除するサンプルプログラム

class test {

  public static void main(String []args) {

   try {

     Runtime.getRuntime().exec(”rm aaa”);

     System.exit(0);

   } catch(Exception e) {

     System.exit(1);

   }

 }

}

id:aquanaut No.3

HeRo回答回数16ベストアンサー獲得回数02005/02/10 00:00:33

ポイント100pt

java.lang.Runtime.exec()メソッドで実行できます。

私は過去に次のようなクラスを作りWebアプリ上で動かしていました。

javaが走るシェルで、実行したいコマンドにpathが通っていなければうまく動かないです。まあ、フルパスでコマンドを指定すればpathを通す必要はないですが。

<pre>

package net.aqua.commons.util;

import java.io.*;

import java.io.BufferedReader;

import java.io.InputStreamReader;

/**

* 外部コマンドを実行するクラス。

* 外部コマンドを実行し、そのコマンドが標準出力に出力する文字列を取得することができる。

*

* @since 2004/05/05

* @author Net Aqua Project all rights reserved.

*/

public class CommandExecuter implements Runnable {

private StringWriter strWriter;

private PrintWriter pwriter;

private BufferedReader buffReader;

/**

* コンストラクタ

*/

public CommandExecuter() {

}

/**

* 外部コマンドを実行する。

* @param command 実行する外部コマンド

* @return String 外部コマンドが標準出力に出力する実行結果

* @throws IOException

*/

public String doExec(String command) throws IOException{

Runtime rt = Runtime.getRuntime();

Process proc = rt.exec(command);

buffReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));

strWriter = new StringWriter();

pwriter = new PrintWriter(strWriter);

//出力結果を読み終わるまで待つ。

Thread th = new Thread(this);

th.start();

try {

th.join();

} catch (InterruptedException e) {

throw new IOException(”Command Exec Failed”);

}

buffReader.close();

pwriter.close();

//文字列の最後の改行を削除する。

String temp = strWriter.toString();

if ((temp.length() > 1) && (temp.substring(temp.length() - 1).getBytes()[0] == 10)) {

temp = temp.substring(0,temp.length() - 1);

}

return temp;

}

/**

* コマンドの実行結果を読み出す。

* @see java.lang.Runnable#run()

*/

public void run() {

String line = null;

try {

while((line = buffReader.readLine()) != null ) {

pwriter.println(line);

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

</pre>

id:W_for_W

具体的な回答を教えていただきましてありがとうございます。

2005/02/10 12:47:50

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません