Estoy incorporando un fragmento de script que determina la versión de Android mediante:
adb shell getprop ro.build.version.release
que devuelve: 4.1.2
o4.0.4
El fragmento actualmente tiene este aspecto:
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
Pensé que adb podría devolver el valor a través de stderr tal como lo hace con la salida push/pull, así que probé esto también (aunque no estoy seguro si esa es la forma correcta de hacerlo):
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
Probé el operador -eq en lugar de == pero advierte que "se espera una expresión entera".
Luego probé esto para asegurarme de que realmente comparara 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
Intenté quitar las comillas "$variable"
sin suerte. Lo anterior genera "4.0.4" o "4.1.2" $version
como se esperaba, pero en todos los intentos anteriores no genera nada para $rw_path
.
¡¿Qué estoy haciendo mal?!
Gracias de antemano.
EDITAR: Probé corchetes dobles como se sugiere a continuación sin suerte. ¿Por qué la salida "4.0.4" no es igual a la cadena "4.0.4"? ¿Es el espacio en blanco relevante en comparación? ¿Puedo recortar la salida primero? Solo un pensamiento...
Respuesta1
Sospecho que hay un "\r" en el resultado del adb
comando. Intentar
$(adb shell getprop ro.build.version.release | tr -d '\r')
Respuesta2
Intente hacer esos corchetes alrededor de los corchetes dobles de su prueba.