2017年6月22日 星期四

[工作] 有時用shell比較兩個字串, 結果卻不是你預期的?

比方說, 在Android下,
你想比較product name是不是你要的,
你大概會這麼做:

#!/bin/bash

PRODUCT=`adb shell getprop ro.product.name`

echo "$PRODUCT"
if [ "$PRODUCT" == "MyProduct" ] ; then
        echo "Product found!"
else
        echo "Not this product."
fi

但是執行結果卻...
$ MyProduct
$ Not this product.

就算得到的product name是你想要的,
但比對結果卻不正確.

把得到的結果轉換成16進位印出,
會發現其實得到的結果有多餘的東西...

adb shell getprop "ro.product.name" | xxd
$ 0000000: 4d79 5072 6f6a 6563 740d0a                 MyProject..

echo "MyProject" | xxd
$ 0000000: 4d79 5072 6f6a 6563 740a                     MyProject.

原來取得的值多了一個\r (0d)

解法就是取得值將\r去掉:
BOOT_COMPLETE=`adb shell getprop "ro.product.name" | tr -d '\r'`

再去比對就沒問題了

沒有留言:

張貼留言