尝试从 MacOS 上的 ZSH 读取长输入到变量中。
echo "URL: "
read URL
输入总是被截断为 1024 个字符...如果我尝试输入其他字符,则什么也不会发生。
输入是从 PostMan 复制/粘贴的,它是一个 S3 签名的上传 URL
如果我尝试从末尾删除一些字符(粘贴后),我只能手动键入删除的字符数
我尝试使用该
-n
选项无济于事(没有任何内容被读入变量)
如何读取长输入? 〜1500 个字符
答案1
read
它本身只是从终端读取字节,它无法控制终端如何读取这些字节。而且终端的线路长度有限,据我记得,不能轻易更改(或根本无法更改?)。终端的行编辑器也很简陋,只支持退格键,不支持其他编辑命令。
使用vared
相反。这有点类似于read
(但选项不同),但它专门用于从终端读取,并使用 zsh 的行编辑器。这使得它更加用户友好,而且没有行长度限制。
URL=
vared -p "URL: " URL
vared
始终从终端读取,而不是从标准输入读取。如果要支持读取从文件或管道重定向的输入,请检查标准输入是否是带有以下命令的终端-t
状况..
URL=
if [[ -t 0 ]]; then
vared -p "URL: " URL
else
read -r URL
fi