sav*_*day 2 bash file-descriptor while-loop
我一直在寻找,找不到明确的线索来验证我从给我的脚本中得出的结论。
因此file.txt是一个打开的文件(由文件描述符3表示),并通过记录时间戳的脚本不断添加新行。每次将新行添加到文件时,下一段是否会进入while循环?
exec 3 < /path/file.txt
while read <&3
command
command..
done
Run Code Online (Sandbox Code Playgroud)
因此,只要我不关闭文件描述符,添加到我的file.txt中的新行将始终激活while循环,对吗?
请帮我解决这个问题。谢谢
要读取文件描述符3,请使用read -u 3(请参阅Bash内置文件)。不要忘记指定应该将值读入的变量名。
一旦read检测到EOF,它将停留在EOF处;在那之后,它将不会发现文件的添加。因此,如果向文件中添加行的代码比此脚本中的代码慢,您将到达终点,循环将终止。如果您不希望这样做,请考虑使用tail -f /path/file.txt,也可以考虑使用流程替换:
while read -u 3 line
do
command1
command2
done 3< <(tail -f /path/file.txt)
Run Code Online (Sandbox Code Playgroud)
或者,如果您想执行以下操作exec:
exec 3< <(tail -f /path/file.txt)
while read -u 3 line
do
command1
command2
done
Run Code Online (Sandbox Code Playgroud)
请注意,tail -f循环将永远不会结束,除非您以某种方式中断了脚本。
| 归档时间: |
|
| 查看次数: |
2440 次 |
| 最近记录: |