mój problem jest prosty, gdy próbuję uruchomić skrypt .sh z Javy, skrypt nie jest wykonywany. Jeśli zmienię skrypt na proste polecenie linuksowe, takie jak ls -all, działa idealnie, więc domyślam się, że używam złego polecenia w moim skrypcie, co zatrzymuje wykonanie. Proszę pomóż.Uruchomienie skryptu bash z java
David kod
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 skrypt:
#! /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;
jesteś pewien skrypt jest ustawiony jako plik wykonywalny? może chmod + x script.sh może pomóc – Kiwy
Czego oczekujesz? Twój skrypt powłoki nie wypisuje niczego na standardowe wyjście, przekierowuje wszystkie dane wyjściowe do plików. Po co jest BufferedReader? – zserge
to głupi kod, napisz 3 wątki dla strumieni wejściowych, wyjściowych i błędów i rób to interaktywnie, to uratuje cię od wszelkiego rodzaju problemów –