Скрипт bin/bash: переключить состояние Bluetooth?

Скрипт bin/bash: переключить состояние Bluetooth?

Я пытаюсь реализовать рабочий процесс 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.

Связанный контент