【发布时间】:2012-08-02 04:09:25
【问题描述】:
我已经完成了一个 shell 脚本,它获取 .jar 文件的输出并分配给一个变量。
rewards_generator.sh
APP_ROOT=/home/testApps/
JAR=${APP_ROOT}ClusterGenerator/generator.jar
#get clusters
clusters=$(loadClusters $1)
for i in `echo $clusters | sed 's/,/ /g'`
do
#pull cluster records from database and save query return status to $x
x=$(/usr/IBM/WebSphere/ProcServer/java/bin/java ${JAR} ${i/-/_} 2>&1)
done
基本上,我对java应用程序所做的就是System.out.print查询返回状态。然后在 bash 中使用 2>&1 以进入输出流并将值分配给 shell 脚本变量。
现在如何获取 perl 脚本的返回值并将其分配给 shell 脚本变量?和我上面做的一样还是有其他方法可以做到这一点?
【问题讨论】:
-
我还没试过。
-
不需要
2>& 1。System.out已经 是 标准输出或 fd 1。 -
现在回到问题的核心:您的示例代码是关于从 java 应用程序内部获取一个值到 shell 中。使用 $( ... ) 是正确的。接下来你提到了 [perl] 脚本的返回值。在 shell 中,最后一个命令的退出状态,无论是脚本、内置还是二进制,始终在
$?变量中可用。因此,请改写您的问题以消除混淆。