从Perl运行Unix命令时出错

时间:2014-12-08 15:15:01

标签: perl unix sh perl-module mod-perl

我试图通过Perl脚本将输出和错误重定向到Unix中的文件。

该命令在Unix中正常运行,但在运行Perl脚本时,它会抛出错误sh: & is unexpected。我也试过使用转义字符

命令:

`ls -lrt $myfile >>& $output`

也使用了命令:

`ls -lrt $myfile >> $output 2>&1` - got ambiguous output redirect error

2 个答案:

答案 0 :(得分:1)

反引号使用/bin/sh。您是否正在尝试重定向STDOUT和STDERR?语法是:

>$output 2>&1

您还需要将文件名转换为shell文字。例如,它们可能包含空格,或更糟。

use String::ShellQuote qw( shell_quote );

my $cmd = shell_quote('ls', '-lrt', $myfile);
$cmd .= '>'.shell_quote($output).' 2>&1';
`$cmd`

答案 1 :(得分:0)

尝试此操作并确保myfile和输出具有值

$myfile='src';
$output='myoutput';
`ls -lrt $myfile >> $output 2>&1`;