Java调用本地shell脚本并得到脚本返回的全部数据

Java代码如下(包为io下):

private List runShell() throws Exception {  
  
        List stringList = new ArrayList<>();  
	//可以执行脚本  
	String command = "/usr/local/RPFiles/transStr.sh";  
	//可以执行命令  
	String command = "ps -ef|grep java";  
	//可以执行带参数的脚本  
	String[] command = {"/usr/local/RPFiles/transStr.sh", "test"};  
        Process ps = Runtime.getRuntime().exec(command);  
        int exitValue = ps.waitFor();
	//当返回值为0时表示执行成功  
        if (0 != exitValue)  
            logger.info("call shell failed. error code is :" + exitValue);
        //只能接收脚本echo打印的数据,并且是echo打印的最后一次数据,如果想打印所有数据,可以参考本篇文章的脚本编写  
        BufferedInputStream in = new BufferedInputStream(ps.getInputStream());  
        BufferedReader br = new BufferedReader(new InputStreamReader(in));  
        String line;  
        while ((line = br.readLine()) != null) {  
            logger.info("脚本返回的数据如下: " + line);  
            stringList.add(line);  
        }  
        in.close();  
        br.close();  
        return stringList;  
 }  

Shell脚本如下:

#!/bin/sh  
#转码  
iconv -f gbk -t utf8 /usr/local/RPFiles/PC_YP_Export.bad  > /usr/local/RPFiles/transStr  
lastVersion=/usr/local/RPFiles/transStr  
#将转码后的数据赋予变量中 可以指定第几行数据如:'2p'则将文本中的第二行数据符给变量mydatestr  
mydatestr=`sed -n 'p' $lastVersion`  
echo "$mydatestr" 
欢迎小伙伴们提出宝贵意见。




你可能感兴趣的:(随手记)