如何清除 ksh 中的键盘缓冲区?

如何清除 ksh 中的键盘缓冲区?

我正在编写一个 Korn shell 脚本,它将读取用户的输入。我想在调用“read”命令之前清除键盘缓冲区,这样用户就不会因不耐烦地提前输入而导致问题。我想补充一点,这个剧本的目标受众是我自己。

答案1

尝试这样

read -t 1 garbage;
echo "Are you sure?"
read input

case $input in
    y*|Y*)
        echo "You said yes!"
        ;;
    *)
        echo "You said no!"
        exit 1
        ;;
esac

编辑:我刚刚意识到这只会删除您可以将其放入循环中的第一行:

while read -t 1 garbage; do
  sleep 0
done

echo "Are you sure?"
read input

case $input in
    y*|Y*)
        echo "You said yes!"
        ;;
    *)
        echo "You said no!"
        exit 1
        ;;
esac

相关内容