il mio problema è semplice, quando provo a eseguire lo script .sh da Java, lo script non viene eseguito. Se cambio il mio script in un semplice comando linux, come ls -all, funziona perfettamente, quindi suppongo che sto usando un cattivo comando nel mio script, che interrompe l'esecuzione. Per favore aiuto.Esecuzione di script bash da java
David codice
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());
}
script 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;
Sei sicuro che il tuo script è impostato come eseguibile? forse chmod + x script.sh potrebbe aiutare – Kiwy
Cosa ti aspetti di ottenere? Lo script della shell non stampa nulla per lo stdout, reindirizza tutto l'output ai file. Per cosa allora BufferedReader? – zserge
questo è un codice stupido, scrivere 3 thread per input, output e flussi di errore e farlo in modo interattivo, questo ti salverà da ogni tipo di problema –