我想写(使用bash)像
这样的东西while no_user_key_pressed
{
do_something....
}
有一些选项可以使用C ++,Java,ncurses和其他特定的o / s。我想要一个简单的bash移植功能。
应该使用^ c 中断来终止剩余的代码。想象一下:'按任意键停止测试'
答案 0 :(得分:1)
您可以以不杀死剩余代码的方式捕获 Ctrl-c :
$ cat test.sh
#!/usr/bin/env bash
trap 'break' INT
while true
do
date
sleep 1
done
echo done
$ ./test.sh
Tue 28 Jun 12:01:22 UTC 2016
Tue 28 Jun 12:01:23 UTC 2016
Tue 28 Jun 12:01:24 UTC 2016
^Cdone
答案 1 :(得分:1)
您可以在read -t
上使用小超时。
缺点是用户必须按<返回>而不是"任何键"。
例如:
while ! read -t 0.01
do
echo -en "$(date)\r"
done
echo "User pressed: $REPLY"
在bash 3.2(OS X)上测试
!
是因为如果超时到期,read
会返回失败(false)。