栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从无尽的烟斗重击中读取

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从无尽的烟斗重击中读取

不知道您的脚本中的内容,我们无法确定地说。

例如,如果您要这样做:

# DON'T DO THIS: Violates http://mywiki.wooledge.org/DontReadLinesWithForfor line in $(cat); do  : ...do something with "$line"...done

…这将等到所有标准输入都可用后,导致您描述的挂起。


但是,如果您遵循最佳实践(按照BashFAQ#1进行操作),则代码将更像这样运行:

while IFS= read -r line; do  : ...do something with "$line"done

…并且实际上会正常运行,并 受writer进行的任何缓冲的影响
。有关控制缓冲的提示,请参见BashFAQ#9。


最后,引用DontReadLinesWithFor:

阅读线的最后一个问题

for
是效率低下。甲
while read
循环读取在从输入流中一次一行;
$(<afile)
一次将整个文件提取到内存中。对于小文件,这不是问题,但是如果您正在读取大文件,则内存需求将非常巨大。(Bash必须分配一个字符串来保存文件,而另一组字符串来保存单词拆分结果…本质上,分配的内存将是输入文件大小的两倍。)

显然,如果内容不确定,则存储要求和完成时间也将相同。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号