Estou incorporando um trecho de script que determina a versão do Android via:
adb shell getprop ro.build.version.release
que retorna: 4.1.2
ou4.0.4
O snippet atualmente se parece com isto:
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
Achei que o adb poderia retornar o valor via stderr, assim como faz com a saída push/pull, então tentei isso também (não tenho certeza se essa é a maneira correta de fazer isso):
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
Tentei o operador -eq em vez de == mas avisa que "expressão inteira é esperada".
Então tentei isso para ter certeza de que realmente compara algo:
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
Tentei tirar aspas "$variable"
sem sorte. As saídas acima são "4.0.4" ou "4.1.2" conforme $version
o esperado, mas em todas as tentativas acima não consegue gerar nada para $rw_path
.
O que estou fazendo de errado?!
Desde já, obrigado.
EDIT: Tentei colchetes duplos conforme sugerido abaixo, sem sorte. Por que a saída "4.0.4" não é igual à string "4.0.4"? O espaço em branco é relevante em comparação? Posso cortar a saída primeiro? Apenas um pensamento...
Responder1
Suspeito que haja um "\r" na saída do adb
comando. Tentar
$(adb shell getprop ro.build.version.release | tr -d '\r')
Responder2
Tente fazer esses colchetes em torno dos colchetes duplos de teste.