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