【问题标题】:Compare two strings in shell, one coming from a command return比较 shell 中的两个字符串,一个来自命令返回
【发布时间】:2015-11-23 09:03:44
【问题描述】:

我想使用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 语句中的测试有什么问题?

提前感谢您的帮助!

【问题讨论】:

  • 哦,兄弟...首先我们需要知道您从 ./blueutil 得到的每个案例?正值表示on,负(或零)值表示off?你的价值观是-1, 0, 1还是不同的价值观?
  • 好吧,你是对的 ./blueutil status 给出了第一个 Status: on 所以它不是布尔值...

标签: string shell variables if-statement bluetooth


【解决方案1】:

我不知道blueutil 是什么,但您的脚本似乎有语法错误。在某些地方,空格很关键,缺少它们会导致错误的结果。特别是,您缺少[ 之后、] 之前和= 周围的空格。也就是说,你的条件应该是:

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

【讨论】:

  • 感谢您的帮助,我更新了它,但它仍然无法正常工作...作为记录,如果蓝牙打开,./blueutil status 返回“Status:on”并返回“Status : off" 如果它是关闭的。
  • 您能否用您的新代码更新您的问题。最好在当前代码下方添加,以便维护历史记录。它适用于不使用 blueutil 的 simple example
  • 好吧,看来我有一个错字,这意味着一个错误!现在正在运行,非常感谢!
猜你喜欢
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多