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 blueutil
escribe a STDERR
y 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.