Bash
如果條件比較無法與相同的值字元串進行比較,Shell 腳本命令輸出
我正在合併一個腳本片段,它通過以下方式確定 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”字元串?相比之下,空格是否相關?我可以先修剪輸出嗎?只是一個想法…
adb
我懷疑命令的輸出中有一個“\r” 。嘗試
$(adb shell getprop ro.build.version.release | tr -d '\r')
嘗試在您的測試雙括號周圍製作這些括號。