bash 有没有一种简单的方法来清除标准输入?
我有一个经常运行的脚本,并且在脚本中的某个时刻读用于获取用户的输入。问题是大多数用户通过从基于 Web 的文档复制并粘贴命令行来运行此脚本。它们经常包含一些尾随空格,或更糟糕的是,包含示例命令后面的一些文本。我想调整脚本以在显示提示之前简单地删除多余的垃圾。
答案1
这bash 中非阻塞 I/O 上的线程可能有帮助。
它建议使用stty
和dd
。
或者您可以使用bash
read
带有-t 0
选项的内置函数。
# do your stuff
# discard rest of input before exiting
while read -t 0 notused; do
read input
echo "ignoring $input"
done
如果您只想在用户位于终端时执行此操作,请尝试以下操作:
# if we are at a terminal, discard rest of input before exiting
if test -t 0; then
while read -t 0 notused; do
read input
echo "ignoring $input"
done
fi
答案2
这是我选择的类似于这里的单行:
while read -t 1 discard; do echo "ignoring input..."; done # Flush input