从java代码运行shell脚本

我几乎已经死了试图解决这个问题。有人能帮帮忙吗?拜托?

以下是代码:

import java.io.*; import java.lang.Runtime; import java.util.*; public class WORKBRO { public static void main(String args[]) { try { String target = new String("/home/dhirendra.panwar/Desktop/test.sh"); Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(target); } catch (Throwable t) { t.printStackTrace(); } } } 

你的代码是正确的,我相信你没有得到exception,如果你使用proc.getErrorStream()读取,你将得不到任何东西。
命令100%以这种方式执行,已经说过现在的事情就是你回应了一些东西,你需要使用BufferedReader读回来。

检查下面的示例,该示例将成功创建名为“stackOverflow”的目录并打印您正在回显的内容。 对于将其放入日志文件中,我担心您可以使用“>”来执行此操作,您可能必须使用某些编辑器命令或使用Java创建文件。

底线: Runtime.getRuntime().exec("command")是从Java执行Unix命令或脚本的正确和定义的方式。

test.sh

 #!/bin/bash echo "hola" mkdir stackOverflow 

Test.java

 import java.io.*; public class Test { public static void main(String[] args) throws Exception { try { String target = new String("/home/hagrawal/test.sh"); // String target = new String("mkdir stackOver"); Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(target); proc.waitFor(); StringBuffer output = new StringBuffer(); BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); String line = ""; while ((line = reader.readLine())!= null) { output.append(line + "\n"); } System.out.println("### " + output); } catch (Throwable t) { t.printStackTrace(); } } }