首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Java代码运行Unix shell脚本?

如何从Java代码运行Unix shell脚本?
EN

Stack Overflow用户
提问于 2009-02-08 05:32:25
回答 14查看 437.2K关注 0票数 168

从Java运行Unix命令非常简单。

代码语言:javascript
复制
Runtime.getRuntime().exec(myCommand);

但是从Java代码运行Unix shell脚本是可能的吗?如果是,那么从Java代码中运行shell脚本是不是一种好的做法?

EN

回答 14

Stack Overflow用户

发布于 2009-02-08 20:18:09

你真的应该看看Process Builder。它真的是为这类事情而建的。

代码语言:javascript
复制
ProcessBuilder pb = new ProcessBuilder("myshellScript.sh", "myArg1", "myArg2");
 Map<String, String> env = pb.environment();
 env.put("VAR1", "myValue");
 env.remove("OTHERVAR");
 env.put("VAR2", env.get("VAR1") + "suffix");
 pb.directory(new File("myDir"));
 Process p = pb.start();
票数 182
EN

Stack Overflow用户

发布于 2014-02-15 12:15:26

您也可以使用Apache Commons exec library

示例:

代码语言:javascript
复制
package testShellScript;

import java.io.IOException;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteException;

public class TestScript {
    int iExitValue;
    String sCommandString;

    public void runScript(String command){
        sCommandString = command;
        CommandLine oCmdLine = CommandLine.parse(sCommandString);
        DefaultExecutor oDefaultExecutor = new DefaultExecutor();
        oDefaultExecutor.setExitValue(0);
        try {
            iExitValue = oDefaultExecutor.execute(oCmdLine);
        } catch (ExecuteException e) {
            System.err.println("Execution failed.");
            e.printStackTrace();
        } catch (IOException e) {
            System.err.println("permission denied.");
            e.printStackTrace();
        }
    }

    public static void main(String args[]){
        TestScript testScript = new TestScript();
        testScript.runScript("sh /root/Desktop/testScript.sh");
    }
}

最后给出了一个基于Apache Doc的实例,以供进一步参考。

票数 24
EN

Stack Overflow用户

发布于 2009-02-08 05:39:18

我认为你已经回答了你自己的问题

代码语言:javascript
复制
Runtime.getRuntime().exec(myShellScript);

至于这是否是一种好的做法。您正在尝试使用Java无法执行的shell脚本执行什么操作?

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/525212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档