我有以下代码从文件中读取行并输出计数:
while read -u 3 -r line; do
echo $i
i=$(( i + 1))
done 3<"$IN_FILE"
(我想在循环内做更多,但这说明了问题)。
这个循环对我来说永远不会结束。我的IN_FILE
包含 2880 万行(用 确认wc -l
),但在我手动杀死它之前,它会继续运行并且输出计数高达 ~35M。如果我使用 head/tail 创建这个文件的一个小样本,它运行得很好并按预期终止。
有谁知道可能导致这种情况的原因?我的文件可能包含一些特殊字符会导致重定向进入循环吗?
如果相关,我正在 Mac OS X 终端中运行这个 bash 脚本......
谢谢。