linux脚本为:
echo nihao,wo ai $1 and $2
Java代码为:
public class JavaExecuShell {
public static void main(String[] args) {
try {
//准备脚本
String cmd = "sh /root/test/test.sh "+args[0]+" "+args[1];
System.out.println("cmd = "+ cmd);
Process proc = Runtime.getRuntime().exec(cmd);
/**
* 可执行程序的输出可能会比较多,而运行窗口的输出缓冲区有限,会造成waitFor一直阻塞。
* 解决的办法是,利用Java提供的Process类提供的getInputStream,getErrorStream方法
* 让Java虚拟机截获被调用程序的标准输出、错误输出,在waitfor()命令之前读掉输出缓冲区中的内容。
*/
String flag ;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while ( (flag=bufferedReader.readLine()) != null){
System.out.println("result ---- "+flag);
}
bufferedReader.close();
/**
* 等待脚本执行完成
*/
proc.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}