我试图通过Perl脚本将输出和错误重定向到Unix中的文件。
该命令在Unix中正常运行,但在运行Perl脚本时,它会抛出错误sh: & is unexpected
。我也试过使用转义字符
命令:
`ls -lrt $myfile >>& $output`
也使用了命令:
`ls -lrt $myfile >> $output 2>&1` - got ambiguous output redirect error
答案 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`;