我正在合併一個腳本片段,它透過以下方式確定 Android 版本:
adb shell getprop ro.build.version.release
返回:4.1.2
或4.0.4
該片段目前如下所示:
if [ "$(adb shell getprop ro.build.version.release)" == "4.1.2" ]; then
rw_path="/sdcard/"
elif [ "$(adb shell getprop ro.build.version.release)" == "4.0.4" ]; then
rw_path="/data/local/"
fi
echo $rw_path
我認為 adb 可能會透過 stderr 傳回值,就像它對推/拉輸出一樣,所以我也嘗試了這個(但不確定這是否是正確的方法):
if [ "$(adb shell getprop ro.build.version.release 2>&1)" == "4.1.2" ]; then
rw_path="/sdcard/"
elif [ "$(adb shell getprop ro.build.version.release 2>&1)" == "4.0.4" ]; then
rw_path="/data/local/"
fi
echo $rw_path
嘗試使用 -eq 運算子代替 ==,但它警告「需要整數表達式」。
然後我嘗試了這個以確保它確實比較了一些東西:
version=$(adb shell getprop ro.build.version.release 2>&1)
if [ "$version" == "4.1.2" ]; then
rw_path="/sdcard/"
elif [ "$version" == "4.0.4" ]; then
rw_path="/data/local/"
fi
echo $version
echo $rw_path
嘗試取消引用"$variable"
但沒有成功。上面的輸出“4.0.4”或“4.1.2”符合$version
預期,但在上面的所有嘗試中,它無法輸出任何內容$rw_path
。
我究竟做錯了什麼?
提前致謝。
編輯:按照下面的建議嘗試了雙括號,但沒有成功。為什麼“4.0.4”輸出不等於“4.0.4”字串?相比之下,空白是否相關?我可以先修剪輸出嗎?只是一個想法...
答案1
我懷疑命令的輸出中有一個“\r” adb
。嘗試
$(adb shell getprop ro.build.version.release | tr -d '\r')
答案2
嘗試在測試雙括號周圍製作這些括號。