【问题标题】:How to get return value of a subroutine in a perl script to bash如何在 perl 脚本中获取子例程的返回值以 bash
【发布时间】: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>& 1System.out 已经 标准输出或 fd 1。
  • 现在回到问题的核心:您的示例代码是关于从 java 应用程序内部获取一个值到 shell 中。使用 $( ... ) 是正确的。接下来你提到了 [perl] 脚本的返回值。在 shell 中,最后一个命令的退出状态,无论是脚本、内置还是二进制,始终在 $? 变量中可用。因此,请改写您的问题以消除混淆。

标签: perl bash shell


【解决方案1】:

您可以使用反引号在 bash 脚本中记录外部命令的输出。

这是一个简单的例子:

#!/bin/bash

# Execute the script, recording output to a variable
x=`/path/to/script.pl`

# Display or act on the output some time later
echo "script output: $x"

【讨论】:

    【解决方案2】:

    现在如何获取 perl 脚本的返回值并将其分配给 shell 脚本变量?

    #! /bin/bash
    perl script.pl
    return_value=$?
    

    【讨论】:

      猜你喜欢
      • 2012-04-22
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多