'read'命令在一行中可以包含的最大字符数是多少



我有以下shell脚本可以读取端子

的行
#!/bin/bash
while read line
do
if [ -z ${line} ]
then
    break
fi
echo ${line}
done

我不能输入超过256个字符。终端不允许我这样做(终端没有打印256个字符以外的任何东西,甚至没有新线。它允许的唯一是backspace(

$ ./echo.sh
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

我正在使用Solaris 10 OS使用的终端是腻子Bash版本3.2.52

这是bash还是Putty的限制?我知道要将输入分为几行,但是我需要知道是否有办法克服读取命令输入的最大字符数量

这是OS终端驱动程序中的限制。

我们通常将其完全理所当然,但是当您输入hi<Backspace>ello并按Enter时,该过程只会读取hello

终端驱动程序通过将行存储在内存中,然后在按下 backspace 时删除该缓冲区中的最后一个字符。用于此的缓冲区具有一些人体规模的大小。在Linux上是4096字节,以进行比较。

您可以通过禁用行编辑来解决此问题:

stty -icanon

read现在将一次读取更多数据,但是如果您按 backspace ,该应用程序实际上将读取backspace字符而不是最终行。

最新更新