【发布时间】:2013-08-18 15:16:25
【问题描述】:
我正在通过 perl 脚本执行一些 shell 命令并捕获输出,就像这样,
$commandOutput = `cat /path/to/file | grep "some text"`;
我还检查命令是否成功运行,
if(!$commandOutput)
{
# command not run!
}
else
{
# further processing
}
这通常有效,我得到正确的输出。问题是,在某些情况下,命令本身不会产生任何输出。例如,有时我试图grep 的文本不会出现在目标文件中,因此不会提供任何输出。在这种情况下,我的脚本将其检测为“命令未运行”,但事实并非如此。
在 perl 中区分这两种情况的正确方法是什么?
【问题讨论】:
-
您不应该使用 perl 来执行 cat 和 grep。 perl 可以轻松、快速、安全地做到这一点
-
确实如此,但是还有很多perl没有替代品,所以我只是构建了一个通用系统来运行命令并获取输出,这些将由perl处理。
-
@Sibster:grep 在速度竞赛中轻松击败 Perl。可能是 2 倍或更多。
-
@Adrian,但是调用启动 shell 来执行 grep 很慢,所以我猜这取决于文件的数量和大小