【问题标题】:capture bash output values inside perl script在 perl 脚本中捕获 bash 输出值
【发布时间】:2020-08-05 20:36:10
【问题描述】:

我有一个 bash 脚本,它将两个变量设置为值(不是 STDOUT)。我想将这些变量存储在 perl 脚本中。

对不起,没有例子..但这是要求。请有什么想法

在 shell 脚本中我正在做这样的事情

source <Script Name> <Variable1> <Variable2>
Value1=$output1
Value2=$output2

====================== 我想在 perl 中做同样的事情

试过

system("sh <Script> <Variable1> <Variable2>");
$Value1 = "$output1";
$Value2 = "$output2";
print $Value1 

空白

【问题讨论】:

  • 'output1' 只是脚本内部变量的名称吗?您需要以某种方式对其进行通信,可能通过将其值写入流。脚本内部的变量不能直接提供给调用者。
  • 所以shell脚本&lt;Script Name&gt;设置变量$output1$output2?
  • @Kris :首先,您的代码中不涉及 bash(您使用 sh 显式运行脚本),所以我建议删除 bash 标记.要将值从 bash 脚本发送回 Perl,您可以使用标准输出、外部文件或双向管道。在所有情况下,您都必须解析脚本的输出。

标签: bash perl


【解决方案1】:

以@Snorik 的回答为基础,您可以使用以下一种方法:

system 'bash', '-c', 'source xyz.sh; echo -n $output1 >1.txt; echo -n $output2 >2.txt';
my $output1 = `cat 1.txt`;
my $output2 = `cat 2.txt`;

【讨论】:

  • 应该是echo -n "$output1" &gt;1.txt,以保留变量中的空格数。
  • 谢谢,我为 shell 脚本编写了一个包装器并将输出重定向到文件,然后我将在 perl 脚本中使用该文件
  • 你能回答你自己的问题吗?
【解决方案2】:

由于 Bash 不允许使用实际的返回值,最简单的方法是 bash 脚本将每个值写入文件,然后从文件中读取每个值。

看看this

【讨论】:

  • 不幸的是我无法访问 bash 脚本,我所能做的就是捕获变量并使用它
猜你喜欢
  • 1970-01-01
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多