我的问题很简单,当我尝试从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