bash“;读第行“;在while循环中永远不会结束

bash“;读第行“;在while循环中永远不会结束,bash,Bash,我有以下代码从文件中读取行并输出计数: while read -u 3 -r line; do echo $i i=$(( i + 1)) done 3<"$IN_FILE" 读取-u3-r行时;做 回声$i i=$((i+1)) 完成3可能尝试使用split-l 1000000$IN_FILE将其分解为29个文件,看看其中是否有任何文件具有奇怪的行为?在读取$IN_FILE中假定的最后一行后,$line的值是多少?此外,文件中使用的行尾是什么?这不太可能,但是wc和re

我有以下代码从文件中读取行并输出计数:

while read -u 3 -r line; do
    echo $i
    i=$(( i + 1))
done 3<"$IN_FILE"
读取-u3-r行时;做
回声$i
i=$((i+1))

完成3可能尝试使用
split-l 1000000$IN_FILE
将其分解为29个文件,看看其中是否有任何文件具有奇怪的行为?

在读取
$IN_FILE
中假定的最后一行后,
$line
的值是多少?此外,文件中使用的行尾是什么?这不太可能,但是
wc
read
认为构成一行的内容可能不匹配。我不确定如何检查最后一行的
$line
的值,因为它不是停在那里,而是继续。根据od的输出,线路终端似乎没有任何异常(仅a\n):
tail-n2 snap-twitter_cliques.txt | od-c
0000000285300025\t46216000020714\t524889019\n4800000040531881\t66690300000060\t374443\n0000073
我试着按照您的建议使用
[[line=$'485318481\t6699013\t37844343']&&break
(这是最后一行的内容)(似乎您的评论建议删除了?)。它没有在那条线上断开,所以它似乎永远也到不了最后一条线,尽管我让它一直跑到了~43米。接下来,我将根据Ranjan的建议尝试使用split来分解文件……这就是您正在运行的代码,还是您将失败的循环进行了修改,使其变小,而没有实际运行?我精确地运行了该代码(它是从原始代码修改而来的,但在修改到上述代码后,我也运行了该代码,并获得了相同的行为)有趣的是,它适用于29个单独的文件中的每一个,但不适用于连接的文件。这就解决了我目前的问题,但奇怪的是,它不能在完整的文件中工作。我想知道split是否会去掉一些不好的字符,或者是因为原始文件太大而导致溢出?不管怎样,谢谢你的建议,现在工作已经完成了。。。