perl - 将系统命令重定向到文件

too*_*oop 0 unix linux bash shell perl

我在下面有这个perl代码,基本上想循环这两个文件.然后调用一个bash脚本(它将文件和分隔符作为参数并打印出多行),然后将该命令的所有输出保存到一个新文件中(文件名末尾加上'_processed').以下语法有什么问题(目前它只创建一个空白文件)?

#!/usr/bin/env perl
use strict;
use warnings;

my(@files) = (
"fixedtt.txt '|'",
"delimd2iffpipe.dat '|'"
);
for my $i (0 .. $#files) {
    my($filename) = split /[\s]+/, "$files[$i]", 2;
    my($name, $type) = split /[\.]+/, "$filename", 2;
    open (MYFILE, '>'."$name".'_processed.'."$type");
    system("sh myBashScript.sh $files[$i]");   #I want to write the entire output of this command to a file
    close (MYFILE); 
}
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以通过前面的命令重定向终端命令的输出> <file name>.人机工程学:

system("sh myBashScript.sh $files[$i]");
Run Code Online (Sandbox Code Playgroud)

变为:

system("sh myBashScript.sh $files[$i] > file.txt");
Run Code Online (Sandbox Code Playgroud)