無限に稼働し続けるコマンドの出力を監視し、毎回行を出力します。ハードウェアボタンのイベントを表示し、各行はプッシュを示します。ボタンが連続して押された頻度を検出する方法は?
私のスクリプトは、それがラインを受信したときに他のコマンドを実行することになったが、問題は、これらの行の内容を実行する必要のあるコマンドを決めていないということですが、指定された遅延時間内の行数です。
言い換えれば、ユーザーは、この監視対象のボタンを数回押して、別のコマンドボタンが押された頻度に応じて実行されます。ユーザは、2回のプレスの間に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
しかし、これは2台のだけの連続したプレス機を扱うん、それはすべてのイベントにCOMMAND1
を実行し、その後のプレスが時間内に、以下の場合でも、およびCOMMAND2
必要があります代わりに実行します。
私は実際にはバッシュでこれを適切に実装する方法は考えています。私はいくつかの種類のマルチスレッドが必要だと思っています。スレッドは、受信した行をリッスンし、カウンタを増やし、イベントが発生してから2秒後にカウントダウンを実行し、カウンタをリセットし、カウントダウンがタイムアウトしたら適切なコマンドを実行します。
興味深いアプローチの間に残っているアカウント時間にかかり。どのように私は2だけでなく、任意の数のプッシュのためにそれを変更する必要がありますか? –
私は動的な数字のプッシュ –
で答えを更新しました申し訳ありませんが、誤解があります。私はcommand1を1回押すとcommand2を押す回数を増やしたくないのですが、多くのコマンド(たとえば5)があり、ボタン押しの数が異なるコマンドに対応しています。 –