shell调用java,如何根据java的输出结果,再决定shell的逻辑

解决方案 »

  1.   

    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;  
    }  
      
    }  至于逻辑,那就是很据返回值的不同而决定是否调用该方法
      

  2.   

    这个应该是shell编程中的吧
    可以让java程序输出结果(System.out.print)
    在shell中使用变量获得结果,类似于 res=`java -jar test.jar`
    这样就可以获取到java程序的输出
      

  3.   

    可以执行完java程序,把结果输入到文本比如>>test.txt。shell读取这个结果再走逻辑代码