gpt4 book ai didi

Bash 文件描述符 3 和 while read 行

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

我一直在寻找但找不到明确的线索来验证我从给我的脚本中推断出的内容。

所以 file.txt 是一个打开的文件(由文件描述符 3),并且通过记录时间戳的脚本不断添加新行。每次向文件中添加新行时,以下片段是否进入 while 循环?

exec 3 < /path/file.txt
while read <&3
command
command..
done

所以只要我不关闭文件描述符,添加到我的 file.txt 的新行将始终激活 while 循环,对吧?

请帮我解决这个问题。谢谢

最佳答案

要从文件描述符 3 中读取,请使用 read -u 3(参见 Bash builtins)。不要忘记指定应将值读入的变量名。

一旦read检测到EOF,就停留在EOF;之后它不会发现文件的添加。因此,如果向文件添加行的代码比此脚本中的代码慢,您将到达终点并且循环将终止。如果您不希望这样,请考虑使用 tail -f/path/file.txt,也许 process substitution也是:

while read -u 3 line
do
command1
command2
done 3< <(tail -f /path/file.txt)

或者,如果你想执行 exec:

exec 3< <(tail -f /path/file.txt)

while read -u 3 line
do
command1
command2
done

请注意,除非您以某种方式中断脚本,否则 tail -f 循环永远不会结束。

关于Bash 文件描述符 3 和 while read 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27352868/

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