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 blueutil
escreve para STDERR
e 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.