im пытается создать BASH-скрипт, который будет постоянно работать в фоновом режиме. Этот скрипт bash должен запрашивать результат из команды rpi-cecd, и если он содержит 45:00, сделайте что-нибудь, и если он содержит 45:03, сделайте что-нибудь еще. Но на данный момент я не могу заставить скрипт работать, если я попрошу более одного результата.BASH | Если команда равна чему-то, иначе, если что-то делать
Рабочий код, но только просят 45:00
/home/rpi-cecd/rpi-cecd | grep -q "45:00" && ok
Code Я пытался, но ничего не работает.
/home/rpi-cecd/rpi-cecd | grep '45' > /dev/null
if [[ $? =~ .*45:00.* ]]
then
echo "OK Button Clicked - HMS"
ok
elif [ $? == *"45:03"* ]
then
echo "Left Button Clicked - Canteen"
left
else
echo "Nothing Clicked?"
fi
EDIT Я просто попытался это не повезло.
hhmm=$(/home/rpi-cecd/rpi-cecd)
case "$hhmm" in
45[:]00)
ok
;;
45[:]03)
left
;;
*)
echo "don't know how to process $hhmm"
;;
esac
Как @Someprogrammerdude предлагает и по крайней мере использовать один и тот же квадрат стратегии кронштейн, если и Элиф (предлагается использовать удвоенные квадратные скобки в обоих). Это работает? – Dilettant
Одна из проблем заключается в том, что '$?' - это код выхода * последней команды (обычно нуль для успеха, неотрицательный номер для отказа). Он не содержит результат вывода. Если вам нужен вывод команды 'grep', вам нужно его захватить. –
'$?' - это статус возврата последнего выполненного CMD. Он всегда является целым числом, он не будет содержать ничего, как '45: 00'. Здесь много других проблем. Попробуйте свой первый cmd и сохраните его вывод в var, ile. 'hhmm = $ (rpi-cecd ...)'. Теперь сравните его с «case» $ hhmm »в 45 [:] 00) cmd1 ...; 45 [:] 03) cmd2 ... ;; *) echo "не знаю, как обрабатывать $ hhmm" ;; esac'. Удачи. – shellter