shell调用java,如何根据java的输出结果,再决定shell的逻辑 shell调用java,如何根据java的输出结果,再决定shell的逻辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 shell调用java你自己想。。java调用shell:public class JavaShellUtil { //基本路径 private static final String basePath = "/tmp/"; //记录Shell执行状况的日志文件的位置(绝对路径) private static final String executeShellLogFile = basePath + "executeShell.log"; //发送文件到Kondor系统的Shell的文件名(绝对路径) private static final String sendKondorShellName = basePath + "sendKondorFile.sh"; public int executeShell(String shellCommand) throws IOException { int success = 0; StringBuffer stringBuffer = new StringBuffer(); BufferedReader bufferedReader = null; //格式化日期时间,记录日志时使用 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS "); try { stringBuffer.append(dateFormat.format(new Date())).append("准备执行Shell命令 ").append(shellCommand).append(" \r\n"); Process pid = null; String[] cmd = {"/bin/sh", "-c", shellCommand}; //执行Shell命令 pid = Runtime.getRuntime().exec(cmd); if (pid != null) { stringBuffer.append("进程号:").append(pid.toString()).append("\r\n"); //bufferedReader用于读取Shell的输出内容 bufferedReader = new BufferedReader(new InputStreamReader(pid.getInputStream()), 1024); pid.waitFor(); } else { stringBuffer.append("没有pid\r\n"); } stringBuffer.append(dateFormat.format(new Date())).append("Shell命令执行完毕\r\n执行结果为:\r\n"); String line = null; //读取Shell的输出内容,并添加到stringBuffer中 while (bufferedReader != null & & (line = bufferedReader.readLine()) != null) { stringBuffer.append(line).append("\r\n"); } } catch (Exception ioe) { stringBuffer.append("执行Shell命令时发生异常:\r\n").append(ioe.getMessage()).append("\r\n"); } finally { if (bufferedReader != null) { OutputStreamWriter outputStreamWriter = null; try { bufferedReader.close(); //将Shell的执行情况输出到日志文件中 OutputStream outputStream = new FileOutputStream(executeShellLogFile); outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-8"); outputStreamWriter.write(stringBuffer.toString()); } catch (Exception e) { e.printStackTrace(); } finally { outputStreamWriter.close(); } } success = 1; } return success; } } 至于逻辑,那就是很据返回值的不同而决定是否调用该方法 这个应该是shell编程中的吧可以让java程序输出结果(System.out.print)在shell中使用变量获得结果,类似于 res=`java -jar test.jar`这样就可以获取到java程序的输出 可以执行完java程序,把结果输入到文本比如>>test.txt。shell读取这个结果再走逻辑代码 我是大四学生,请大家帮我把手中的学习资源排下序 求高手解答! 关于二进制流的问题 请问有没有可以实现SSH服务端的java开源项目? EJB3.0 远程客户访问 大家推荐一本java的书吧 能采用汉字作为数据库的字段名称吗? 关于==和equals()的问题 请教:关于session的问题 和Java打交道太累了,中文问题,令人头疼的问题。。。。!! 怎么用java语言写一个客户端能调用百度地图的APi? 为甚麽java源码中有好多变量要去引用域?
java调用shell:public class JavaShellUtil {
//基本路径
private static final String basePath = "/tmp/";
//记录Shell执行状况的日志文件的位置(绝对路径)
private static final String executeShellLogFile = basePath + "executeShell.log";
//发送文件到Kondor系统的Shell的文件名(绝对路径)
private static final String sendKondorShellName = basePath + "sendKondorFile.sh";
public int executeShell(String shellCommand) throws IOException {
int success = 0;
StringBuffer stringBuffer = new StringBuffer();
BufferedReader bufferedReader = null;
//格式化日期时间,记录日志时使用
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS ");
try {
stringBuffer.append(dateFormat.format(new Date())).append("准备执行Shell命令 ").append(shellCommand).append(" \r\n");
Process pid = null;
String[] cmd = {"/bin/sh", "-c", shellCommand};
//执行Shell命令
pid = Runtime.getRuntime().exec(cmd);
if (pid != null) {
stringBuffer.append("进程号:").append(pid.toString()).append("\r\n");
//bufferedReader用于读取Shell的输出内容 bufferedReader = new BufferedReader(new InputStreamReader(pid.getInputStream()), 1024);
pid.waitFor();
} else {
stringBuffer.append("没有pid\r\n");
}
stringBuffer.append(dateFormat.format(new Date())).append("Shell命令执行完毕\r\n执行结果为:\r\n");
String line = null;
//读取Shell的输出内容,并添加到stringBuffer中
while (bufferedReader != null &
&
(line = bufferedReader.readLine()) != null) {
stringBuffer.append(line).append("\r\n");
}
} catch (Exception ioe) {
stringBuffer.append("执行Shell命令时发生异常:\r\n").append(ioe.getMessage()).append("\r\n");
} finally {
if (bufferedReader != null) {
OutputStreamWriter outputStreamWriter = null;
try {
bufferedReader.close();
//将Shell的执行情况输出到日志文件中
OutputStream outputStream = new FileOutputStream(executeShellLogFile);
outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-8");
outputStreamWriter.write(stringBuffer.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
outputStreamWriter.close();
}
}
success = 1;
}
return success;
}
} 至于逻辑,那就是很据返回值的不同而决定是否调用该方法
可以让java程序输出结果(System.out.print)
在shell中使用变量获得结果,类似于 res=`java -jar test.jar`
这样就可以获取到java程序的输出