Я пытаюсь реализовать рабочий процесс Alfred, который переключает мое соединение Bluetooth.
STATUS=$(/usr/local/bin/blueutil status)
if [ $STATUS == "on" ]
then
/usr/local/bin/blueutil off
echo "off"
else
/usr/local/bin/blueutil on
echo "on"
fi
что я здесь делаю не так?
Это ничего не даст.
решение1
Я предполагаю, что blueutil
пишет в STDERR
и не STDOUT
. В этом случае объедините первое со вторым, одновременно захватывая вывод blueutil
.
STATUS=$(/usr/local/bin/blueutil status 2>&1)
Более того, вы хотите увидеть, есть ли выходсодержит on
, поэтому вместо:
if [ $STATUS == "on" ]
сказать:
if [[ $STATUS == *on ]]
вместо этого для того, чтобысоответствоватьнужную строку.
решение2
blueutil теперь работает немного по-другому, возвращая статус как '1' или '0' вместо слов. Вот скрипт, который переключает состояние bluetooth, может он поможет другим, кто попал на эту страницу через google:
#!/bin/bash
STATE=$(/usr/local/bin/blueutil -p)
((STATE ^= 1))
/usr/local/bin/blueutil -p $STATE
Это ^=
побитовый оператор XOR-равнения, который меняет значение переменной между 0 и 1.