Java:调用Shell脚本

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29229567/article/details/83618786

Java:调用Shell脚本

Shell脚本的路径为:/home/felven/word2vec/demo-classes.sh

Java代码如下:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class RunShell {
	public static void main(String[] args){
		try {
			String shpath="/home/felven/word2vec/demo-classes.sh";
			
			Process ps = Runtime.getRuntime().exec(shpath);
			ps.waitFor();

			BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
			StringBuffer sb = new StringBuffer();
			String line;
			while ((line = br.readLine()) != null) {
				sb.append(line).append("\n");
			}
			
			String result = sb.toString();
			System.out.println(result);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

其实就是一个Process类进行调用,然后把shell的执行结果输出到控制台下。
需要注意的是,在调用时需要执行waitFor()函数,因为shell进程是JAVA进程的子进程,JAVA作为父进程需要等待子进程执行完毕。

另外在eclipse控制台输出时并不是边执行边输出,而是shell全部执行完毕后输出,所以如果执行较为复杂的shell脚本看到没有输出时可能会误以为没有执行,这个时候看看终端里面的进程,TOP命令一下就能看到其实shell脚本已经开始执行了。

猜你喜欢

转载自blog.csdn.net/qq_29229567/article/details/83618786