gpt4 book ai didi

bash 附加到循环内外的文件

转载 作者:行者123 更新时间:2023-11-29 09:23:37 25 4
gpt4 key购买 nike

这两个命令有什么区别?

while true; do date; sleep 1; done > /tmp/log

对比

while true; do date >> /tmp/log; sleep 1; done 

两者都每次追加到文件一行,但似乎两者的方式不同。

我认为第一个不会将任何内容附加到文件,因为整个附加到文件将在循环结束后发生,并且因为循环是无限的,所以永远不会将任何内容写入文件。另外,当只使用一个 > 时,第一个附加到文件怎么可能?

最佳答案

在版本 1 中,输出会立即添加到文件中,因为 date 命令在退出时刷新其输出,这会将所有内容写入标准输出文件。

版本 1 没有附加到文件中。它在循环开始时打开文件的文件描述符,并在循环开始时清空文件。该描述符在整个循环中保持打开状态,并作为标准输出被循环中的每个命令继承。由于它不会在每个命令之前关闭并重新打开,因此文件不会每次都被截断——它们只是写入文件中的当前位置。

关于bash 附加到循环内外的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30112712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com