bin/bash 脚本:切换蓝牙状态?

bin/bash 脚本:切换蓝牙状态?

我正在尝试做一个切换蓝牙连接的 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”,而不是单词。下面是一个切换蓝牙状态的脚本,希望它能帮助其他通过谷歌进入此页面的人:

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

^=按位异或相等运算符,它将变量在 0 和 1 之间翻转。

相关内容