我正在合并一个脚本片段,通过确定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运算符而不是==,但它警告“预期的整数expression式”。
然后我试图确定它实际上比较了一些东西:
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 。
我究竟做错了什么?!
提前致谢。
编辑:试过如下build议的双括号没有运气。 为什么“4.0.4”输出不等于“4.0.4”string? 空白是相关的比较? 我可以先修剪输出吗? 只是一个想法…
我怀疑在adb命令的输出中有一个“\ r”。 尝试
$(adb shell getprop ro.build.version.release | tr -d '\r')
尝试在你的testing双括号中做出括号。