我正在嘗試執行一個阿爾弗雷德工作流程來切換我的藍牙連接。
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 之間翻轉。