读取命令有限制吗?

读取命令有限制吗?

我正在尝试编写一个 bash 脚本,它可以让我在文件中保存备份代码(很多数字)。我已经完成了脚本,但它只让我保存 4096 位代码。

我尝试这样做:

# Ask for backup code
read -p "Backup code:" backupcode
# Check backup code length
l="${#backupcode}"
m=4096
if (( l > m )); then
    echo -e "${RED}ERROR:${NC} Backup is too large! The limit is 4096 digits."
else
    # Save backup code in the file
    echo $backupcode > "${path[$i]}"
fi

我认为这没有检测到备份太大。所以,我认为有一些与读取命令有关的东西。

如果 存在限制read,我可以使用其他替代方案吗?

答案1

命令本身没有限制read。但在终端中单行输入的数量是有限制的。要查看这一点,请尝试运行该命令wc -c并输入很长的一行。您将达到 4096 字节的相同限制。

要输入超过限制的内容,可以安排使代码为多行,每行足够短,或者以其他方式输入,而不是直接从终端读取煮熟模式

如果启用 readline,bash 会一一读取字符,并且除了可用内存之外,行长度没有限制。

read -e -p "Backup code:" backupcode

然而,从终端读取如此长的输入是一个非常糟糕的用户界面。用户不会坐在那里输入数千个字符。相反,读取输入从剪贴板或来自文件。

相关内容