我想监视一个无限运行的命令的输出,并且每隔一段时间打印一行。它显示硬件按钮的事件,每行显示一个按钮。如何检测连续按下按钮的频率?
我的脚本在接收行时应该运行其他命令,但问题是这些行的内容不能决定必须运行哪个命令,而是给定延迟内的行数。
换句话说,用户可以多次推动这个被监视的按钮,并且根据按钮被按下的频率执行不同的命令。用户在两次按压之间有2秒的时间,然后根据连续按下的次数选择命令。
我目前没有与这个结构的bash脚本:
#!/bin/bash
lasttouch="0"
MONITORING_COMMAND
| while read line; do
if [ $(date +%s --date="2 seconds ago") -lt $lasttouch ]
then
COMMAND2
else
lasttouch=$(date +%s)
COMMAND1
fi
done
然而,这最多只能处理两个连续压机,它的每一个事件执行COMMAND1
,即使随后的新闻在时间和COMMAND2
如下宜反而运行。
我实际上不知道如何在Bash中正确实现它。我想我需要某种多线程,一个线程监听传入的行并增加一个计数器,另一个线程在每个事件之后运行2秒倒计时,并在计数超时而没有其他事件时重置计数器并执行相应的命令。
有趣的方法。我不知道如何修改它,而不仅仅是2次? –
我用动态数字推动 –
更新了答案,我很抱歉,但是有一个误解。我不希望command1在推动次数较多时运行,command2运行次数较多,但我有很多命令(例如5个),每个按钮次数与不同的命令相对应。 –