如果我在bash中执行while read行循环,那么从stdin读取大量输入是非常低效的,因为它根本没有缓冲。
使用while read bash 4096行是否会提供临时缓冲,从而允许-n更高效地执行大型输入的读取?
发布于 2012-12-08 01:00:09
不是的。您可以使用以下命令验证读取操作是否一次执行一次:
echo foo | strace bash -c 'read -n 100 f'并看到单次读取需要4个系统调用。但是实现你想要的是很容易的。要将stdin中的最多4096个字节放入一个变量中,请使用进程替换:
bash -c 'r=$( dd bs=4096 count=1 2> /dev/null); echo "$r"'发布于 2012-12-08 01:06:41
-N (而不是-n)选项将读过换行符。
https://stackoverflow.com/questions/13767472
复制相似问题