如何在shell中获取java输出

时间:2012-10-10 12:17:03

标签: java bash shell

我有一个正在执行jar文件的shell脚本 run.sh

#!/bin/bash
"$JAVA_HOME"/bin/java -jar test.jar $1 $2 $3

在java中完成所有过程后,我需要执行一个命令。所以我的java方法调用了一个 shell脚本通过传递一些参数。

public static void Test(String Arg1, int Arg2, int Arg3, String Arg4) throws IOException, InterruptedException {

            File currentLocation = new File(Test.class.getProtectionDomain().getCodeSource().getLocation().getPath());

            String executeShellScript = currentLocation.getParentFile().toString() + "/out.sh";

           //SOME LOGIC

            ProcessBuilder pb = new ProcessBuilder("/bin/sh",executeShellScript,arg1, arg2, arg3, arg4);
            pb.redirectErrorStream(true);

            Process p = pb.start();
            BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = null;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

        }

在我的out.sh中,我接受参数并执行命令。

#!/bin/bash

IMAGE=$1
ROW=$2
COLUMN=$3
DESTINATION=$4
echo $IMAGE

我想知道我是否可以通过获取所有参数来从同一个脚本(run.sh)执行和处理我的jar的输出?

1 个答案:

答案 0 :(得分:1)

您可以将jar的输出重定向到一个文件中(在run.sh中$ 3之后的> out.txt)并在run.sh中处理该文件。或者你可以管道(|)输出。