为什么要在bash脚本中避免管道

  • 本文关键字:管道 脚本 bash bash pipe
  • 更新时间 :
  • 英文 :


大多数时候我看到有人建议在bash脚本中使用管道,有人指出不使用它,而仅使用一个命令。

示例:

find $dir -name $pattern

而不是

ls $dir | grep $pattern

有其他原因比避免管道?

管道本身没有错。应该避免的是毫无用处的fork(),这意味着开始一个过程是相对耗时的事情。

如果可以在一个过程中完成某些操作,通常比使用两个过程以相同的结果要好。

因为管道创建一个新的过程。在您的示例中,LS和GREP是两个过程,找到一个。一个或多个管道使命令较慢。一个微不足道的例子:

$ time find Downloads -name *.pdf &>/dev/null
real    0m0.019s
user    0m0.012s
sys 0m0.004s
$ time ls Downloads | grep pdf &>/dev/null
real    0m0.021s
user    0m0.012s
sys 0m0.004s

最新更新