Я включаю фрагмент скрипта, который определяет версию 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 так же, как и с выводом push / pull, поэтому я тоже попробовал это (хотя не уверен, что это правильный способ сделать это):
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
команда. Пытаться
$(adb shell getprop ro.build.version.release | tr -d '\r')
Попробуйте сделать эти скобки вокруг двойных скобок для теста.