script bin/bash: ¿alternar el estado de bluetooth?

script bin/bash: ¿alternar el estado de bluetooth?

Estoy intentando realizar un flujo de trabajo de Alfred que alterne mi conexión 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

¿Qué estoy haciendo mal aquí?

No hace nada.

Respuesta1

Supongo que eso blueutilescribe a STDERRy no STDOUT. En ese caso, combine el primero con el segundo mientras captura la salida de blueutil.

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

Además, desea ver si la salidacontiene on, entonces en lugar de:

if [ $STATUS == "on" ]

decir:

if [[ $STATUS == *on ]]

en cambio parafósforola cadena deseada.

Respuesta2

blueutil ahora funciona un poco diferente, con el estado devuelto como '1' o '0' en lugar de palabras. Aquí hay una secuencia de comandos que alterna el estado de Bluetooth, que pueda ayudar a otras personas que terminaron en esta página a través de Google:

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

Es ^=el operador bit a bit XOR-igual, que invierte una variable entre 0 y 1.

información relacionada