java - 如何在shell中获取java输出

标签 java bash shell

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

#!/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 的输出?

最佳答案

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

关于java - 如何在shell中获取java输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12819154/

相关文章:

java - 在同一上下文中使用 Spring Boot 2 OAuth 客户端和资源服务器

python - 如何让我的 Python 脚本使用 bash 工作?

shell - KSH Shell 双变量名称?

bash - 使 bash 中的命令超时,避免不必要的延迟

java - 带有 JDBC 的 MySQL,没有 while 循环,select 不起作用,while 它不接受下一个查询

java - 如何更改主类中不同类的变量值?

java - 我的 'else' 语句有什么问题?

macos - 在 OSX/bash 上查找并替换文件中的文本

python - 如何通过 Fabric 设置远程服务器时区?

linux - 如何在 shell 脚本中加入 2 个变量?