私はコマンドの束を実行し、コマンド出力を>
を使ってログファイルにリダイレクトするbashシェルスクリプトを持っています。 Runtime.getRuntime().exec("sh shellscript.sh");
を使ってJavaからシェルスクリプトを呼び出すと、シェルスクリプトが実行されますが、ログファイルは書き込まれません。どうして?そして私はそれをどのように機能させるのですか?Javaからのリダイレクションでbashスクリプトを呼び出す
編集: だから私がやっていることは少し異なります。あなたのコードは正常に動作します。しかし、Javaプログラム内のリダイレクトは機能しません。以下のサンプルプログラムでは、ログファイルは書き込まれません。
$ cat script.sh
#!/bin/sh
echo "Hello there"
echo "Hello there 2"
$ cat RunScript.java
public class RunScript {
public static void main(String[] argv) throws Exception {
int i = Runtime.getRuntime().exec("sh /home/gpx/script.sh >> log").waitFor();
System.out.println("Exit code : " + i);
}
}
これらは相対的なものです。 'cat file.txt >> log.txt'のようなものを書くだけです。すでに確認済みです! – GPX
相対パスである場合は、実行するjavaプロセスの作業ディレクトリに対する相対位置に書き込まれます。したがって、javaプロセスの作業ディレクトリを基準にしたログファイルを確認する必要があります。しかし、私はそれを推奨しません - ログファイルは絶対的な場所に書き込まれる必要がありますが、これは構成可能でなければなりません。 – madhurtanwani
さて、絶対パスで書き直しました。助けてくれなかった! – GPX