私の問題は簡単です、Javaから.shスクリプトを実行しようとすると、スクリプトは実行しません。私のスクリプトをls -allのような単純なlinuxコマンドに変更すると、それは完璧に動作するので、私のスクリプトでは実行を停止する悪いコマンドを使っていると思います。助けてください。Javaからの実行中のbashスクリプト
デビッド
Javaコード:
String cmd = "bash /home/david/burza/getter.sh";
try {
Process proc = Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", cmd});
BufferedReader read = new BufferedReader(new InputStreamReader(proc.getInputStream()));
try {
proc.waitFor();
} catch (InterruptedException e) {
System.out.println(e.getMessage());
}
while (read.ready()) {
System.out.println(read.readLine());
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
bashスクリプト:コマンドの開始から 'bashの' を除去することにより、
#! /bin/bash
wget -O data1.html http://www.rmsystem.cz/kurzy-online/akcie/easyclick;
touch ext_data.txt;
grep 'table class="tbl1"' ./data1.html | tr '<td>' ' ' | tr '-' 'A' | grep -o -w '[0-9, ]*' | sed 's/ *//g' | sed '/^$/d' | tr ',' '.' > ext_data.txt;
lines=`wc -l ext_data.txt | grep -o '[0-9]*'`;
(echo $lines; cat ext_data.txt) > ext_data.txt.new && mv ext_data.txt.new ext_data.txt;
あなたのスクリプトは実行可能ファイルとして設定されていますか?多分chmod + x script.shは助けることができる – Kiwy
あなたは何を得ると思いますか?シェルスクリプトはstdoutに何も表示しないので、すべての出力をファイルにリダイレクトします。次にBufferedReaderは何ですか? – zserge
これは愚かなコードで、入力ストリーム、出力ストリーム、エラーストリーム用に3つのスレッドを作成し、インタラクティブに実行すると、すべての種類の問題からあなたを救うことができます –