script bin/bash: alterna o estado do bluetooth?

script bin/bash: alterna o estado do bluetooth?

Estou tentando fazer um fluxo de trabalho Alfred que alterna minha conexão 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

O que estou fazendo de errado aqui?

Não faz nada.

Responder1

Eu estou supondo que blueutilescreve para STDERRe não STDOUT. Nesse caso, mescle o primeiro com o último enquanto captura a saída de blueutil.

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

Além disso, você deseja ver se a saídacontém on, então em vez de:

if [ $STATUS == "on" ]

dizer:

if [[ $STATUS == *on ]]

em vez disso, paracorrespondera sequência desejada.

Responder2

blueutil agora funciona de maneira um pouco diferente, com o status retornado como '1' ou '0' em vez de palavras. Aqui está um script que alterna o estado do bluetooth, pode ajudar outras pessoas que acessaram esta página via google:

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

O ^=é o operador igual a XOR bit a bit, que inverte uma variável entre 0 e 1.

informação relacionada