2015-11-23 53 views
0

我想比較兩個字符串就知道,如果我的藍牙開啓或關閉,使用blueutil比較殼兩個字符串,一個從命令返回來

我嘗試這樣做:

cd ../../../usr/local/bin 
./blueutil status 
a=$(./blueutil status) 
printf "$a\n" 
if [ "$a" = "Status: on" ] 
    then echo "ok" 
else 
    echo "not ok" 
fi 

但回報是

Status: on 
Status: on 
not ok 

我在if語句中的測試出了什麼問題?

在此先感謝您的幫助!

+0

哦,兄弟......首先,我們需要知道你從哪裏得到回報.'/blueutil'每種情況? *表示正值,*表示負值(或零值)表示*關閉*?你的值是'-1,0,1'還是不同的值? –

+0

好吧,你是對的./blueutil狀態給出了第一個狀態:在 所以這不是一個布爾值... – azertguigui

回答

0

我不知道blueutil是什麼,但你的腳本似乎有語法錯誤。在某些地方,空格是至關重要的,如果丟失它們會導致錯誤的結果。尤其是,您在[之後,]之前以及=之間缺少空格。也就是說,你的條件應該是:

if [ "$a" = "Status: on" ] 
    then echo "ok" 
else 
    echo "not ok" 
fi 
+0

感謝您的幫助,我更新了它,它仍然無法正常工作... 爲了記錄, ./blueutil狀態返回「狀態:開啓」,如果藍牙已開啓,並且返回「狀態:關閉」(如果關閉)。 – azertguigui

+0

你能否用你的新代碼更新你的問題?最好作爲當前代碼下面的添加項,以保持歷史記錄。它適用於我的[簡單示例](http://ideone.com/aHxO23),它不使用blueutil。 – kaylum

+0

好吧,似乎我有一個錯誤,這意味着一個錯誤!它現在工作,非常感謝! – azertguigui