在带有读取的 while 循环中的睡眠期间禁用用户输入 (bash)

Disable user input during sleep in while loop with read (bash)

我有一个带有 while 循环的 bash 小脚本,它等待用户输入,执行某些操作然后休眠一段时间:

while true; do
  read input
  echo $input
  sleep 5
done

我不希望它在睡眠期间接受任何用户输入。问题是在脚本继续时处理睡眠期间在 shell 中输入的任何输入。是否可以在睡眠期间完全禁用用户输入?

我看过这个:Disabling user input during an infinite loop in bash,但这对我没有帮助,是吗?

希望有人能帮我解决这个问题。

这是需要的:

#!/usr/bin/env bash
  
hideinput(){
  [ -t 0 ] && stty -echo -icanon time 0 min 0
}
cleanup(){ 
  [ -t 0 ] && stty sane
}
trap cleanup EXIT
trap hideinput CONT

while true; do
  while read -t 0.001 -n 10000 discard; do :; done # Discard anything already inputted.
  cleanup
  read -p "Input something   :  " input
  hideinput
  echo "What you inputted : " $input
  sleep 5
done