如果我有这个 perl 应用程序:
print `someshellscript.sh`;
打印一堆东西并且需要很长时间才能完成,如何在 shell 脚本执行过程中打印该输出?
看起来 Perl 只会在完成时打印 someshellscript.sh 结果,有没有办法在执行过程中使输出刷新?
您可能想要做的是这样的事情:
open(F, "someshellscript.sh|");
while (<F>) {
print;
}
close(F);
这将运行someshellscript.sh
并打开一个读取其输出的管道。循环读取脚本生成的while
每一行输出并打印出来。有关更多信息,请参阅打开的文档页面。
这里的问题是使用反引号转义将您的脚本存储到一个字符串中,然后您将其打印出来。出于这个原因,没有办法用打印“冲洗”。
使用 system() 命令应该连续打印输出,但您将无法捕获输出:
system "someshellscript.sh";