Unix大师!
我有一个Java程序,它将一些参数传递给Servlet.Servlet将信息输入到DB中,并将创建的行的ID返回给调用它的java程序.该Java程序是在Unix上运行shell脚本,后来接着调用另一个Java程序的Java节目2(说).
我的问题是这个 - 我需要将从Java程序获得的ID作为参数传递给同一个shell脚本中的Java Program_2.那有什么最佳实践吗?
到目前为止我正在处理的事情 -
1)使java程序返回退出代码System.exit().2个问题 - 如何在shell中的变量中捕获退出代码?这是正确的方法吗?退出代码实际上是用于返回程序的成功参数...
2)将输出写入文件java Java_Program >opt.txt.如果我这样做,那么如何opt.txt再次读取shell变量中的内容?
非常感谢!
编辑:我应该在实际之前提到这个......程序在不同的机器上.我使用脚本ssh进入另一台机器.然后运行java程序2.因此,我无法管道这两个.
Oli*_*rth 12
出于你所说的原因,我不建议使用退出状态来携带数据.捕获退出状态取决于您正在使用的shell,但在Bash中,特殊$?变量包含最后执行的进程的退出状态.
将数据写入stdout更加惯用.在Bash中,您可以按如下方式捕获它:
output=$(java Java_Program)
Run Code Online (Sandbox Code Playgroud)
要么:
output=`java Java_Program`
Run Code Online (Sandbox Code Playgroud)
(您经常会听到第一种语法首选的论点.)
然后,您可以使用以下命令将其提供给下一个流程的标准输入:
echo $output > java Java_Program_2
Run Code Online (Sandbox Code Playgroud)
更简单地说,您可以简单地将流程组合在一起:
java Java_Program | java Java_Program_2
Run Code Online (Sandbox Code Playgroud)
我不确定我是否遗漏了一些东西,但听起来我可以让第一个程序写入stdout并将两个程序一起管道,不是吗?你甚至不需要一个shellcript.