如果我在bash中读取LINE循环,从stdin读取大量输入是非常低效的,因为它根本不进行缓冲。
将在读取时使用-n 4096 LINE提供临时缓冲,允许bash更有效地执行大输入的读取吗?
答案 0 :(得分:2)
没有。您可以使用以下命令验证是否一次执行了一次读取:
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"'
答案 1 :(得分:1)
-N
(而非-n
)选项将读取换行符。