我正在运行这样的脚本:
while IFS=$'\r' read -r line || [[ -n "$line" ]]; do
something
done < "$1"
基本上,它读取一个文本文件(as $1
)并为每一行“做一些事情”。
文本文件有 20 行。如果我现在通过在脚本运行并在第 10 行运行时添加一行(第 21 行)来修改文本文件,那么它稍后会在第 21 行运行吗?
换句话说,脚本如何读取文本文件?在开始时一次读取整个文件,还是在必要时逐行读取?
我正在运行这样的脚本:
while IFS=$'\r' read -r line || [[ -n "$line" ]]; do
something
done < "$1"
基本上,它读取一个文本文件(as $1
)并为每一行“做一些事情”。
文本文件有 20 行。如果我现在通过在脚本运行并在第 10 行运行时添加一行(第 21 行)来修改文本文件,那么它稍后会在第 21 行运行吗?
换句话说,脚本如何读取文本文件?在开始时一次读取整个文件,还是在必要时逐行读取?
似乎它一次读取 1 行,而不是一次将整个文件读入内存。我为你做了一个小测试:
创建一个包含 3 行的文件:
创建这个小脚本:
运行脚本并开始添加新行:
它的工作原理很像
tail -f
在一些实时日志上运行。