我在一些Linux bash脚本中看到,例如T2
生成的configure
脚本,这样的序列
autoconf
(...)
exec 5>>config.log
(...)
echo foo >&5
(重复多次)
在我看来,人们可以做到
echo bar >&5
更简单。那么用echo foo >>config.log
做这件事有什么意义呢。必须有一些我不理解的理由。它是什么?
答案 0 :(得分:5)
便利性。如果目标日志文件名发生变化,您将需要搜索&替换所有实例。这很烦人。您可以使用变量缓解这一点:
$LOGFILE=config.log
echo foo>>$LOGFILE
性能。每一行,bash都要扩展LOGFILE - 需要时间。然后bash必须fopen
该文件 - 需要花费很多时间。然后bash可以fwrite
到它。然后bash终于fclose
了。因此,当你使用字符串而不是文件描述符时,bash必须做大量的工作来将数据填充到文件中。一次性,两次性,这不是什么大不了的事。这样做数百次,数千次? It adds up
灵活性。将文件描述符分配给文件描述符后,您可以执行interesting things: