你的代碼是正確的,我相信你沒有得到例外,如果你看過使用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();
}
}
}
你什麼異常?結果是什麼,你期望得到什麼? – Fredrik
必須運行shell腳本test.sh ...但其不工作... –
test.sh contains ... #!/ bin/bash echo「hola」>> dashboard.log –