小智 23
在 Bash 4 中,您可以将-t
(timeout)设置为0
. 在这种情况下,read
立即返回一个退出状态,指示是否有数据等待:
# do some time consuming task here
while read -r -t 0; do read -r; done
read -p "Give me some input: " input
Run Code Online (Sandbox Code Playgroud)
小智 12
我认为没有办法清除标准输入,但是(使用 bash)您可以在要求输入之前阅读并丢弃那里的内容
#do some time consuming task here
read -t 1 -n 10000 discard
read -p "Give me some input: " input
Run Code Online (Sandbox Code Playgroud)
这会读取标准输入并超时 1 秒,但如果标准输入中的字符超过 10000,它就会失败。我不知道您可以将 nchars 参数设置为多大。
小智 6
function clear_stdin()
(
old_tty_settings=`stty -g`
stty -icanon min 0 time 0
while read none; do :; done
stty "$old_tty_settings"
)
clear_stdin
Run Code Online (Sandbox Code Playgroud)
小智 5
这对我很有效:
function clean_stdin()
{
while read -e -t 0.1; do : ; done
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22747 次 |
最近记录: |