所以我想从java执行sh脚本
代码:
String command = "/__data/1.sh";
ProcessBuilder pb = new ProcessBuilder("/bin/bash", "-c", command);
Process p = null;
try {
p = pb.start();
} catch (IOException e) {
System.out.println("Could not execute script");
}
BufferedReader reader = new BufferedReader(new InputStreamReader(
p.getInputStream()));
try {
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(command + " says: " + line);
}
} catch (IOException e) {
System.out.println("Error reading response");
}
1.sh:
echo Hello
mkdir QWE
echo Hello2
我得到了什么:
/__data/1.sh says: Hello
/__data/1.sh says: Hello2
Mkdir没有效果
1.sh chmodded to 777
有什么问题?
UPD:哦,我的错,忘了这条线,现在编辑了。但主要问题是为什么其他命令不起作用。是的,就像mkdir一样。 当我从控制台调用/ bin / bash -c /__data/1.sh时,它可以正常工作 UPD:哦,似乎,mkdir不能正常工作,因为我没有设置完整的路径。抱歉。解决答案 0 :(得分:2)
+ line
结束时您遗漏了println
。这应该至少摆脱一些混乱。不知道为什么mkdir不能正常工作。