我的字符串比较有什么问题?

时间:2017-03-02 15:56:40

标签: bash

我在Bash脚本中评估字符串表达式时遇到问题。此代码段会查找已连接的平板电脑的显示大小,并将其存储在$displaySize中。调用echo $displaySize时,它会回显1280x800

displaySize=$($adb_env -s $usb shell wm size | awk '{print $3}')
echo "$displaySize"
fifteen="1920x1080"
ten="1280x800"
if [ "$displaySize" == "$fifteen" ] ; then
    echo "Configuring a 15\""
    foo ; fi
if [ "$displaySize" == "$ten" ] ; then
    echo "Configuring a 10\""
    bar ; fi

代码应跳过$fifteen if块并浏览$ten if块,但它目前会跳过这两个块。我做错了什么?

1 个答案:

答案 0 :(得分:5)

您的变量包含一个文字回车符(这就是为什么在打印此字符时光标会移回到行的开头)。要删除它:

displaySize=${displaySize//$'\r'/}

为了调试目的,要明确地显示它:

printf 'declareSize=%q\n' "$declareSize" >&2

或者在运行脚本之前运行set -x,这将生成如下日志:

+ '[' $'1280x800\r' == 1920x1080 ']'

......使问题显而易见。