我正在合并一个脚本片段,它通过以下方式确定 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"
引用,但无济于事。上面的输出结果与$version
预期一致,为“4.0.4”或“4.1.2”,但在上述所有尝试中,为“”均未输出任何内容$rw_path
。
我究竟做错了什么?!
提前致谢。
编辑:尝试了下面建议的双括号,但没有成功。为什么“4.0.4”输出不等于“4.0.4”字符串?相比之下空格是否相关?我可以先修剪输出吗?只是一个想法……
答案1
我怀疑命令的输出中有一个“\r” adb
。尝试
$(adb shell getprop ro.build.version.release | tr -d '\r')
答案2
尝试在测试双括号周围制作这些括号。