Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl脚本中捕获bash输出值_Bash_Perl - Fatal编程技术网

在perl脚本中捕获bash输出值

在perl脚本中捕获bash输出值,bash,perl,Bash,Perl,我有一个bash脚本,它将两个变量设置为值(不是STDOUT)。我想将这些变量存储在perl脚本中 对不起,我没有例子。。但这是要求。有什么想法吗 在shell脚本中,我正在做这样的事情 source <Script Name> <Variable1> <Variable2> Value1=$output1 Value2=$output2 源代码 Value1=$output1 Value2=$output2 ===================== 我

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

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

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

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`;