首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash read行与read -n行

Bash read行与read -n行
EN

Stack Overflow用户
提问于 2012-12-08 00:53:14
回答 2查看 1.6K关注 0票数 1

如果我在bash中执行while read行循环,那么从stdin读取大量输入是非常低效的,因为它根本没有缓冲。

使用while read bash 4096行是否会提供临时缓冲,从而允许-n更高效地执行大型输入的读取?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-08 01:00:09

不是的。您可以使用以下命令验证读取操作是否一次执行一次:

代码语言:javascript
复制
echo foo | strace bash -c 'read -n 100 f'

并看到单次读取需要4个系统调用。但是实现你想要的是很容易的。要将stdin中的最多4096个字节放入一个变量中,请使用进程替换:

代码语言:javascript
复制
bash -c 'r=$( dd bs=4096 count=1 2> /dev/null); echo "$r"'
票数 2
EN

Stack Overflow用户

发布于 2012-12-08 01:06:41

-N (而不是-n)选项将读过换行符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13767472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档