【发布时间】:2017-01-09 18:01:15
【问题描述】:
我在一些 Linux bash 脚本中看到,例如由 autoconf 生成的 configure 脚本,这样的序列
exec 5>>config.log
(...)
echo foo >&5
(...)
echo bar >&5
(重复多次)
在我看来,一个人可以做到
echo foo >>config.log
这更简单。那么使用exec 这样做有什么意义。一定有什么我不明白的原因。这是什么?
【问题讨论】:
-
可能是为了性能;每次您想向其发送内容时,它都不需要重新打开文件。它在语义上也有其他差异;例如,如果您在执行脚本的中途删除了文件,它不会重新创建文件并将输出的后半部分放入其中,而是保持文件句柄处于打开状态。
-
@davmac 我认为您可以将其发布为答案。