Perl,用管道执行bash命令

时间:2016-09-13 14:34:07

标签: bash perl

对不起,如果我的英语不好。

我有一个bash命令:

convert somefile1.png somefile2.png -resize '200x200!' MIFF:- | compare -metric AE -fuzz '5%' - null:-

该命令返回数字,如何在perl脚本中获取此值?

我的代码:

my $s_command = 
    "convert " . $s_img1_path . " " .  
    $s_img2_path . " -resize '" . 
    $N_IMAGEMAGICK_IMG_SIZE . "x" . $N_IMAGEMAGICK_IMG_SIZE . 
    "!' MIFF:- | compare -metric AE -fuzz '5%' - null:-";

my $s_out = `$s_command`;

但是我无法在$ s_out中获得返回值。而且,这个值是stdout本身,为什么?

1 个答案:

答案 0 :(得分:0)

我运行了以下代码:

#!/usr/bin/perl -w
use strict;

my $cmd = "grep strict test.pl -n|cut -c1-12";
my $result = `$cmd`;
print $result;

STDOUT的输出正如预期的那样(实际上我在这段代码上运行了grep):

2:use strict
4:my $cmd = 

当我注释掉print行时,STDOUT没有输出。 也许这个问题与STDERR有关,你应该检查一下。