前言

为了加快调研项目的速度,很多人会选择混合编程,当想一次性执行完整套流程时,不免会需要调用其他程序。

这里就给大家介绍如何在java环境下调用shell程序。

方法

在java中,Runtime.getRuntime().exec()方法给我们提供了这个功能,而且Runtime.getRuntime()给我们提供了以下几种exec()方法:

Process exec(String command)

在单独的进程中执行指定的字符串命令。

Process exec(String[] cmdarray)

在单独的进程中执行指定命令和变量。

Process exec(String[] cmdarray, String[] envp)

在指定环境的独立进程中执行指定命令和变量。

Process exec(String[] cmdarray, String[] envp, File dir)

在指定环境和工作目录的独立进程中执行指定的命令和变量。

Process exec(String command, String[] envp)

在指定环境的单独进程中执行指定的字符串命令。

Process exec(String command, String[] envp, File dir)

在有指定环境和工作目录的独立进程中执行指定的字符串命令。

代码

提供个简单示例代码:

try {
    Runtime runtime = Runtime.getRuntime();
    String script  = SCRIPT_FILEPATH;
    ProcessBuilder builder = new ProcessBuilder("/bin/chmod", "755", script);
    Process process = builder.start();
    process.waitFor();

    Process pro = runtime.exec("/bin/sh -c " + script);
    int status = pro.waitFor();
    if (status != 0) {
        System.out.println("Failed to call shell's command ");
    } else {
        BufferedReader input = new BufferedReader(new InputStreamReader(pro.getInputStream()));
        String line;
        while ((line = input.readLine()) != null) {
            System.out.println(line.trim());
        }
        input.close();
    }
} catch (Exception e) {
    e.printStackTrace();
}