2015-11-23 56 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