转自:http://blog.csdn.net/tengdazhang770960436/article/details/12014839
1.shell文件return.sh
echo 1
echo 2
echo 3
2.java文件Test.java
- import java.io.BufferedInputStream;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
-
- public class Test {
- public static void main(String[] args) throws Exception {
-
- String cmds[] = new String[9];
- cmds[0] = "/home/aiuap_cj/report/return.sh";
- cmds[1] = "1";
- cmds[2] = "2";
- cmds[3] = "3";
- cmds[4] = "4";
- cmds[5] = "5";
- cmds[6] = "6";
- cmds[7] = "7";
- cmds[8] = "8";
-
-
- Process pcs = Runtime.getRuntime().exec(cmds);
-
-
- String result = null;
-
-
- BufferedInputStream in = new BufferedInputStream(pcs.getInputStream());
-
- BufferedReader br = new BufferedReader(new InputStreamReader(in));
-
-
- String lineStr;
- while ((lineStr = br.readLine()) != null) {
- result = lineStr;
- }
-
- br.close();
- in.close();
-
- System.out.println("==============================" + result);
-
- }
-
- }
解释:
shell返回给java的值是通过echo完成的,java获取到的shell返回值是最后的echo值,所以上面的java所能获取到的值就是3。
如果:你想把脚本执行的过程中错误给记录下来,那么可以把return.sh修改如下:
echo 1
echo 2
echo 3
rm -r /8888.txt 2>error.log
这里有一点问题在于你无法把命令执行过程中的错误信息给直接返回到java调用端,这个时候你可以把命令执行结果返回给java调用端,然后把产生的错误日志写入到制定文件中,之后通过读取日志文件来查看错误信息。
echo 1
echo 2
echo 3
rm -r /8888.txt 2>error.log
echo $?
java调用shell获取返回值
原文:http://www.cnblogs.com/x_wukong/p/5359895.html