我的問題很簡單,當我嘗試從Java運行.sh腳本時,腳本不執行。如果我將腳本更改爲一個簡單的linux命令(例如ls -all),它可以很好地工作,所以我想我的腳本中使用了一個錯誤的命令,這會停止執行。請幫忙。從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腳本:
#! /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 2012-03-20 16:52:34
你期望得到什麼?你的shell腳本不會輸出任何標準輸出,它將所有輸出重定向到文件。那麼什麼是BufferedReader? – zserge 2012-03-20 17:07:32
這是一個愚蠢的代碼,爲輸入,輸出和錯誤流編寫3個線程並以交互方式執行,這將爲您節省各種麻煩 – 2013-03-07 10:44:20