Bin/Bash-Skript: Bluetooth-Status umschalten?

Bin/Bash-Skript: Bluetooth-Status umschalten?

Ich versuche, einen Alfred-Workflow durchzuführen, der meine Bluetooth-Verbindung umschaltet.

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

was mache ich hier falsch?

Es tut nichts.

Antwort1

Ich vermute, dass blueutilin STDERRund nicht geschrieben wird STDOUT. In diesem Fall fügen Sie Ersteres in Letzteres zusammen, während Sie die Ausgabe von erfassen blueutil.

STATUS=$(/usr/local/bin/blueutil status 2>&1)

Außerdem möchten Sie sehen, ob die Ausgabeenthält on, also statt:

if [ $STATUS == "on" ]

sagen:

if [[ $STATUS == *on ]]

stattdessen, umübereinstimmendie gewünschte Zeichenfolge.

Antwort2

blueutil funktioniert jetzt etwas anders, wobei der Status als „1“ oder „0“ und nicht als Wörter zurückgegeben wird. Hier ist ein Skript, das den Bluetooth-Status umschaltet. Vielleicht hilft es anderen, die über Google auf diese Seite gelangt sind:

#!/bin/bash
STATE=$(/usr/local/bin/blueutil -p)
((STATE ^= 1))
/usr/local/bin/blueutil -p $STATE

Dies ^=ist der bitweise XOR-Gleichheitsoperator, der eine Variable zwischen 0 und 1 umdreht.

verwandte Informationen