问题
从Java运行Unix命令非常简单。
Runtime.getRuntime().exec(myCommand);
但是可以从Java代码运行Unix shell脚本吗?如果是,从Java代码中运行shell脚本是一个好习惯吗?
#1 热门回答(162 赞)
你应该看看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();
#2 热门回答(23 赞)
我会说,Javato的精神并不是从Java运行shell脚本。 Java意味着是跨平台的,运行shell脚本会将其用途仅限于UNIX。
话虽如此,绝对可以从Java中运行shell脚本。你使用的是与你列出的完全相同的语法(我自己没有尝试过,但是尝试直接执行shell脚本,如果不起作用,请执行shell本身,将脚本作为命令行参数传递) 。
#3 热门回答(21 赞)
我想你已回答了自己的问题
Runtime.getRuntime().exec(myShellScript);
至于它是否是一个好习惯...你想用一些你不能用Java做的shell脚本做什么?