2014-03-19 109 views
1
#!/bin/bash 

for i in $(seq $1) 
     do 
       echo -n '.' 
       sleep 1 
     done 

echo 

脚本根据用户的输入每秒打印一个点并在屏幕上显示点数。我想要做的是,当我按下某个键(例如,a)时,脚本将在半秒内像一个点一样运行得更快。因此,按下同一个键时,它运行得越快。如何在脚本运行时处理循环输出

+0

所以你想在脚本已经运行时交互调整睡眠时间? – Saucier

+0

这是正确的:D你能帮助我吗? – Cailou

回答

1

使用变量作为sleep的持续时间:

duration=1 
# ... inside loop: 
       sleep $duration 
# ... 

然后每次sleep结束通话,有一些代码来检查新的按键,并根据需要改变的$duration值。

在另一个说明中,根据sleep的版本,您可以使用它,它可能不支持小数参数,因此您可能必须使用单独的程序,如usleep

+1

一个问题是'睡眠'只能在秒钟内工作。所以'usleep'将是一个更好的选择,因为它支持微秒。 – Saucier

+0

啊......我的系统的'sleep'支持小数秒,所以它会变化。无论如何,我会补充说。 –

+0

感谢您的回答,但是您可以帮我使用代码来检查按键吗? – Cailou