在perl脚本中捕获bash输出值
我有一个bash脚本,它将两个变量设置为值(不是STDOUT)。我想将这些变量存储在perl脚本中 对不起,我没有例子。。但这是要求。有什么想法吗 在shell脚本中,我正在做这样的事情在perl脚本中捕获bash输出值,bash,perl,Bash,Perl,我有一个bash脚本,它将两个变量设置为值(不是STDOUT)。我想将这些变量存储在perl脚本中 对不起,我没有例子。。但这是要求。有什么想法吗 在shell脚本中,我正在做这样的事情 source <Script Name> <Variable1> <Variable2> Value1=$output1 Value2=$output2 源代码 Value1=$output1 Value2=$output2 ===================== 我
source <Script Name> <Variable1> <Variable2>
Value1=$output1
Value2=$output2
源代码
Value1=$output1
Value2=$output2
=====================
我想在perl中也这样做
尝试
系统(“sh”);
$Value1=“$output1”;
$Value2=“$output2”;
打印$Value1
变为空白由于Bash不允许使用实际返回值,最简单的方法是Bash脚本将每个值写入文件,然后从文件中读取每个值
请看一看以@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`;
不幸的是,我没有访问bash脚本的权限,我所能做的就是捕获变量,并使用“output1”作为脚本内部变量的名称?您需要以某种方式进行通信,可能是通过将其值写入流。脚本内部的变量不会直接提供给它的调用者。因此shell脚本
设置变量$output1
和$output2
?@Kris:首先,代码中不涉及bash(您使用sh
显式运行脚本),因此我建议删除bash标记。要将值从bash脚本发送回Perl,可以使用stdout或外部文件,也可以使用双向管道。在所有情况下,您都必须解析脚本的输出。应该是,即echo-n“$output1”>1.txt,以保留变量中的空格数。谢谢。我为shell脚本编写了一个包装器,并将输出重定向到文件,然后我将在perl脚本中使用该文件。您能回答自己的问题吗?
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`;