Я намагаюся написати скрипт bash, який опитує btmon для підключення пристроїв. У мене є робоче рішення, але це абсурдно повільно, і, схоже, проблема полягає в тому, що проблема є дуже повільною, щоб вийти після пошуку відповідності (близько 25 секунд). Що я можу зробити, щоб прискорити grep
або взагалі не використовувати його?
#!/bin/bash
COUNTER=0
while :
do
until btmon | grep -m 1 '@ Device Connected'
do :
done
let COUNTER=COUNTER+1
echo on 0 | cec-client RPI -s -d 1
sleep 5
echo as | cec-client RPI -s -d 1
until btmon | grep -m 1 '@ Device Disconnected'
do :
done
let COUNTER=COUNTER-1
if [ $COUNTER -eq 0 ];
then echo standby 0 | cec-client RPI -s -d 1;
fi
done
редагувати: Для уточнення, btmon
це інструмент Bluetooth для моніторингу, який є частиною пакета Bluez, а cec-клієнт - це утиліта, яка постачається з libCEC для видачі команд через послідовну шину HDMI-CEC (серед іншого).
btmon
реалізує буферизацію себе, і в цьому випадку вам не пощастить.
btmon
? ви впевнені, що це не лише питання буферизації?