Bash 在读取之前刷新标准输入

Bash 在读取之前刷新标准输入

bash 有没有一种简单的方法来清除标准输入?

我有一个经常运行的脚本,并且在脚本中的某个时刻用于获取用户的输入。问题是大多数用户通过从基于 Web 的文档复制并粘贴命令行来运行此脚本。它们经常包含一些尾随空格,或更糟糕的是,包含示例命令后面的一些文本。我想调整脚本以在显示提示之前简单地删除多余的垃圾。

答案1

bash 中非阻塞 I/O 上的线程可能有帮助。

它建议使用sttydd

或者您可以使用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

相关内容