从Java运行Unix命令非常简单。
Runtime.getRuntime().exec(myCommand);
但是从Java代码运行Unix shell脚本是可能的吗?如果是,那么从Java代码中运行shell脚本是不是一种好的做法?
发布于 2009-02-08 20:18:09
你真的应该看看Process Builder。它真的是为这类事情而建的。
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();
发布于 2014-02-15 12:15:26
您也可以使用Apache Commons exec library。
示例:
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的实例,以供进一步参考。
发布于 2009-02-08 05:39:18
我认为你已经回答了你自己的问题
Runtime.getRuntime().exec(myShellScript);
至于这是否是一种好的做法。您正在尝试使用Java无法执行的shell脚本执行什么操作?
https://stackoverflow.com/questions/525212
复制相似问题