bin/bash スクリプト: Bluetooth の状態を切り替えますか?

bin/bash スクリプト: Bluetooth の状態を切り替えますか?

Bluetooth 接続を切り替える Alfred ワークフローを実行しようとしています。

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に書き込むと推測します。その場合、 の出力をキャプチャしながら前者を後者にマージします。STDERRSTDOUTblueutil

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 の間で反転します。

関連情報