我有以下shell脚本来读取终端
中的行#!/bin/bash
while read line
do
if [ -z ${line} ]
then
break
fi
echo ${line}
done
我输入的字符数不能超过256个。终端不允许我这样做(终端不打印超过256个字符的内容,甚至不打印新行。只允许它退格)
$ ./echo.sh
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
我正在使用
solaris 10 OS
使用的终端是腻子
bash版本3.2.52
这是bash或putty的限制吗?我知道要将我的输入分成几行,但我需要知道是否有办法克服为读取命令输入的最大字符数作为输入
答案 0 :(得分:6)
这是OS终端驱动程序的限制。
我们通常认为它完全是理所当然的,但是当您输入hi<Backspace>ello
并按Enter键时,该过程只会显示hello
。
终端驱动程序通过将行存储在内存中,然后在按 Backspace 时删除该缓冲区中的最后一个字符来实现。 用于此的缓冲区具有一些人体尺寸。在Linux上,它是4096字节,用于比较。
你可以通过禁用行编辑来解决这个问题:
stty -icanon
read
现在会一次读取更多数据,但是如果按 Backspace ,应用程序将实际读取退格字符而不是最后一行。