如何清空标准键盘输入流?

afgkidy 2011-12-17 10:39:38
#!/bin/bash

echo "begain"
#.......
#.......
#.......
echo "end"

echo -n "reboot system now? (n|y) : "
read answer
if [ "$answer" = "y" ]
then
reboot
else
echo "reboot later, your input is : $answer"
fi

问题:
假设在打印“begain”和“end”之间用户不小心碰到键盘,输入了字符,那么用户输入“y”后,系统也不会重启。

例如:
假设不小心碰到了“0”,则会打印:
begain
.....(略)不小心碰到了“0”键
end
reboot system now? (n|y) : y
reboot later, your input is : 0y

如何处理意外输入:
我想在打印“end”之后,请空键盘的输入终端,本例中,即需要清空“0”这个字符。该如何办不到?

...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Linux-Torvalds 2011-12-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 afgkidy 的回复:]

引用 2 楼 linwhwylb 的回复:

在read answer之前加入一句read -t 0 -n 10000 garbage


这个不行哈!
[/Quote]
这个呢?
dd if=/dev/null of=/dev/stdin
或者
dd if=/dev/null of=/dev/tty
afgkidy 2011-12-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 linwhwylb 的回复:]

在read answer之前加入一句read -t 0 -n 10000 garbage
[/Quote]

这个不行哈!
Linux-Torvalds 2011-12-17
  • 打赏
  • 举报
回复
在read answer之前加入一句read -t 0 -n 10000 garbage
昵称很不好取 2011-12-17
  • 打赏
  • 举报
回复
再多一步好了,用户输入后让用户确认是否执行刚才的操作,如何输入正确就执行reboot,否则重新输入

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧