读取文件时Bash脚本循环内存不足?

读取文件时Bash脚本循环内存不足?,bash,memory,while-loop,readfile,Bash,Memory,While Loop,Readfile,这来自bash脚本,看起来它最终总是会耗尽内存。。为读取的每一行递增地使用更多内存: while read line; do echo $line done < ./hugefile 读行时;做 回音$线 完成文件,这两种情况都不明显。。而不是简单的sed语句。它似乎集中在mkdir上,但我需要仔细查看以确定。。首先,这些错误并不是发生在哪里——将它们抛出到/dev/null似乎不会改变这种内存爬行。我对磁盘驱动器管理(ext3)的工作原理知之甚少,无法理解它是否一定要积累或保留一些细节

这来自bash脚本,看起来它最终总是会耗尽内存。。为读取的每一行递增地使用更多内存:

while read line; do
echo $line
done < ./hugefile
读行时
;做
回音$线
完成
有没有一种方法可以让bash逐行读取文件,而不会占用内存

我已经看到acknowledge[for x in y;do]循环有这个问题,但是解决这个问题的方法不太适合我逐行读取文件

显然,我可以将文件分成几部分,但我更喜欢一个优雅的解决方案,即在不需要内存的地方不使用内存。。内存一次只需要保存一行


那么,我怎样才能逐行读取无限大的文件,而不必担心内存问题呢?

你链接到的帖子中的问题完全不同。你的线圈不应该漏。你是如何衡量它的呢?最高总内存正在增加,上一轮它以与内存不足一致的方式失败。我用的是覆盆子圆周率,上一次无法用ssh连接到它,所以这次看它。唯一的另一个方面是读取文件后的请求,是对磁盘的写入,但我看不出这是一个因素。除非它与
screen
相关,但我知道screen在几页之后不会保留太多。所以,我只是检查了screen外部,它没有添加内存使用。循环本身不是什么问题,只有当行长得离谱或者包含像
/*/*/*/*/*/*/*/*/*.…
这样的序列时,才会由于内存而失败。但是,调用此循环的任何内容都可能会占用无限内存,例如
echo“$(thisscript)”>文件
,这两种情况都不明显。。而不是简单的sed语句。它似乎集中在mkdir上,但我需要仔细查看以确定。。首先,这些错误并不是发生在哪里——将它们抛出到/dev/null似乎不会改变这种内存爬行。我对磁盘驱动器管理(ext3)的工作原理知之甚少,无法理解它是否一定要积累或保留一些细节,而新细节的速度比它的操作速度快得多。