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

jag*_*zer 0 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
Run Code Online (Sandbox Code Playgroud)

代码应该跳过$fifteen if块并在块中运行$ten if,但它目前都会跳过这两个块.我究竟做错了什么?

Cha*_*ffy 5

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

displaySize=${displaySize//$'\r'/}
Run Code Online (Sandbox Code Playgroud)

要明确地显示它以进行调试:

printf 'declareSize=%q\n' "$declareSize" >&2
Run Code Online (Sandbox Code Playgroud)

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

+ '[' $'1280x800\r' == 1920x1080 ']'
Run Code Online (Sandbox Code Playgroud)

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