Comando para automatizar la diferenciación SailfishOS+Alien Dalvik desde un dispositivo android

Comando para automatizar la diferenciación SailfishOS+Alien Dalvik desde un dispositivo android

EDIT0: Tengo 3 teléfonos inteligentes:

Un teléfono inteligente Jolla1 con SailfishOS v3 + Alien Dalvik y 2 teléfonos inteligentes Android.

Quiero poder diferenciarlos en lenguaje Shell:

En mi Jolla1 Linux:

$ uname -s
Linux
$ getprop ro.build.version.release
4.1.2
$ uname -a 
Linux myJolla1 3.4.108.20190506.1 #1 SMP PREEMPT Wed Oct 9 18:24:45 UTC 2019 armv7l armv7l armv7l GNU/Linux

En mi primer teléfono inteligente Android a través de adb shell:

shell@hlteatt:/ $ getprop ro.build.version.release
5.0
shell@hlteatt:/ $ uname -s
/system/bin/sh: uname: not found
127|shell@hlteatt:/ $ uname -a
/system/bin/sh: uname: not found

En mi segundo teléfono inteligente Android a través de adb shell:

BV9500Pro:/ $ uname -s
Linux
BV9500Pro:/ $ getprop ro.build.version.release
8.1.0
BV9500Pro:/ $ uname -a                                                                                                                             
Linux localhost 4.4.95 #9 SMP PREEMPT Wed Mar 20 18:03:34 CST 2019 aarch64

Intenté esto pero ambos dispositivos tienen la getpropherramienta, por lo que no funciona:

getprop 2>/dev/null | grep -q ro.build.version.release && export osFamily=Android || export osFamily=$(uname -s)

POR CIERTO :Pez VelaOSes un verdadero Linux basado en el kernel de Linux + elDistribución de software del proyecto Mer.(el último se bifurca del descontinuadoMeegodistribución de Linux)

Respuesta1

Puede obtener tres respuestas distintas uname -my utilizarlas.

Esperamos una respuesta de falla del dispositivo sin uname, pero suprimimos el error y tomamos la respuesta vacía como nuestro indicador.

case "$(uname -m 2>/dev/null)" in
  (armv7l)  DEVICE=Jolla ;;
  (aarch64) DEVICE=Android1 ;;
  ("")      DEVICE=Android2 ;;
  (*)       DEVICE=UNKNOWN ;;
esac

Si bien podríamos referirnos a los números de versión del software, es posible que estos cambien cuando se actualice el sistema operativo. Usar la información del hardware es más confiable en las circunstancias actuales, pero generará falsos positivos si obtiene más dispositivos que comparten la misma arquitectura de hardware.

Respuesta2

Otra forma podría ser instalar bash (la aplicación Termux, por ejemplo) en todos los dispositivos Android y hacer que el script pruebe la OSTYPEvariable bash:

En el dispositivo Android 8.1, la OSTYPEvariable bash es igual linux-android(vea la captura de pantalla a continuación)

Por tanto el comando para diferenciar será:

echo $OSTYPE | grep -q android && export osFamily=Android || export osFamily=$(uname -s)

ingrese la descripción de la imagen aquí

información relacionada