我有以下代码从文件中读取行并输出计数:
while read -u 3 -r line; do
echo $i
i=$(( i + 1))
done 3<"$IN_FILE"
(我想在循环中做更多事情,但这说明了问题)。
这个循环永远不会结束。我的IN_FILE
包含28.8M行(与wc -l
一起确认),但在我手动删除它之前它只是继续运行并输出最多约35M的计数。如果我使用head / tail创建此文件的一小部分样本,它运行正常并按预期终止。
有谁知道可能导致这种情况的原因是什么?我的文件可能包含哪些特殊字符会导致重定向进入循环?
如果相关,我在Mac OS X终端中运行这个bash脚本......
感谢。
答案 0 :(得分:1)
也许尝试使用split -l 1000000 $IN_FILE
将其分解为29个文件并查看其中是否存在任何奇怪的行为?