我有一个正在执行jar文件的shell脚本 run.sh。
#!/bin/bash
"$JAVA_HOME"/bin/java -jar test.jar $1 $2 $3
在java中完成所有过程后,我需要执行一个命令。所以我的 java 方法调用外壳脚本通过传递给它一些参数。
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 在 3 美元 run.sh 之后)并以 run.sh 处理该文件。 或者你可以通过管道 (|) 输出。