Salida del comando de script de Shell si la comparación de condiciones no se puede comparar con la cadena del mismo valor

Salida del comando de script de Shell si la comparación de condiciones no se puede comparar con la cadena del mismo valor

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.2o4.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" $versioncomo 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 adbcomando. Intentar

$(adb shell getprop ro.build.version.release | tr -d '\r')

Respuesta2

Intente hacer esos corchetes alrededor de los corchetes dobles de su prueba.

información relacionada