bin/bash 腳本:切換藍牙狀態?

bin/bash 腳本:切換藍牙狀態?

我正在嘗試執行一個阿爾弗雷德工作流程來切換我的藍牙連接。

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 之間翻轉。

相關內容