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 blueutil
in STDERR
und 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.