gpt4 book ai didi

java - 使java程序返回值以调用shell脚本

转载 作者:搜寻专家 更新时间:2023-10-30 21:46:19 26 4
gpt4 key购买 nike

Unix 大师!

我有一个 Java 程序,它将一些参数传递给 Servlet。 Servlet 将信息输入数据库并将创建的行的 ID 返回给调用它的 java 程序。 Java 程序 在 Unix shell 脚本 中运行,随后调用另一个 java 程序 Java Program_2(比方说)。

我的问题是 - 我需要将我们从 Java Program 获得的 ID 作为参数传递给同一个 shell 中的 Java Program_2脚本。对此有什么最佳实践吗?

到目前为止我正在处理的事情 -

1) 使用 System.exit() 让 java 程序返回一个退出代码。 2 个问题 - 我如何在 shell 的变量中捕获退出代码?这是正确的方法吗? exit code其实是为了返回程序的success参数...

2) 将输出写入文件 java Java_Program >opt.txt。如果我这样做,那么我如何在 shell 变量中再次读取 opt.txt 的内容?

非常感谢!

编辑: 其实我之前应该提过这个...程序在不同的机器上。我使用脚本 ssh 进入另一台机器..然后运行 ​​java 程序 2。因此,我无法通过管道传输这两个程序。

最佳答案

出于您所述的原因,我不建议使用退出状态来携带数据。捕获退出状态取决于您使用的 shell,但在 Bash 中,特殊的 $? 变量包含最后执行的进程的退出状态。

将数据写入标准输出更为惯用。在 Bash 中,您可以按如下方式捕获它:

output=$(java Java_Program)

或:

output=`java Java_Program`

(您经常会听到第一种语法是首选的争论。)

然后您可以将其提供给下一个进程的标准输入:

echo $output > java Java_Program_2

更简单地说,您可以简单地将您的流程连接在一起:

java Java_Program | java Java_Program_2

关于java - 使java程序返回值以调用shell脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6072812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com