Kommando nur einmal ausführen

Gespeichert von Erik Wegner am/um
Body

Eine Anwendung führt beim Eintreten eines Ereignisses einen Shell-Befehl aus. Dieser Befehl soll eine Sounddatei abspielen. Allerdings passiert es, dass die Ereignisse zu schnell hintereinander eintreffen und sich die Geräusche überschneiden. Deshalb soll die Datei nur abspielt (der Befehl ausgeführt) werden, wenn er noch nicht aktiv ist. Dazu kann das folgende Befehlskonstrukt verwendet werden:

$(ps ax | grep -w aplay | grep -vq "grep") || aplay /home/user1/sound.wav

Wichtig ist der Parameter "-q" am zweiten grep, er sorgt dafür, dass WAHR/FALSCH zurückgegeben wird.