7

如果我有这个 perl 应用程序:

print `someshellscript.sh`;

打印一堆东西并且需要很长时间才能完成,如何在 shell 脚本执行过程中打印该输出?

看起来 Perl 只会在完成时打印 someshellscript.sh 结果,有没有办法在执行过程中使输出刷新?

4

2 回答 2

16

您可能想要做的是这样的事情:

open(F, "someshellscript.sh|");
while (<F>) {
    print;
}
close(F);

这将运行someshellscript.sh并打开一个读取其输出的管道。循环读取脚本生成的while每一行输出并打印出来。有关更多信息,请参阅打开的文档页面。

于 2009-04-17T00:47:09.943 回答
3

这里的问题是使用反引号转义将您的脚本存储到一个字符串中,然后您将其打印出来。出于这个原因,没有办法用打印“冲洗”。

使用 system() 命令应该连续打印输出,但您将无法捕获输出:

system "someshellscript.sh";
于 2009-04-17T00:46:03.533 回答