Estoy tratando de escribir un script que determinará las acciones basadas en la arquitectura de la máquina. Ya utilizo uname -mpara recoger la línea de la arquitectura, sin embargo no sé cuántos arquitecturas ARM no son, ni sé si uno es armhf, armelo arm64.
Ya que esto es necesario para esta secuencia de comandos para determinar si las partes de la secuencia de comandos se pueden ejecutar o no, yo estoy tratando de encontrar una forma sencilla de determinar si la arquitectura es armhf, armelo arm64. ¿Hay una sola línea o un comando simple que se puede utilizar para la producción, ya sea armhf, armelo arm64?
El script está específicamente escrito para los sistemas Debian y Ubuntu, y estoy etiquetando como tal con esto en mente (se cierra automáticamente si no está en una de esas distribuciones, pero esto también podría aplicarse de una manera mucho más amplia si el comando (s) existe)
EDITAR: Recientemente aprendí que Armel está muerto y que los creadores de software arm64 (PPA o virtual) no son los más estables. Así que tengo una búsqueda con comodines para encontrar arm*y asumir armhf, pero aún es necesario descubrir un revestimiento que devuelva uno de los tres, ya sea un comando de Ubuntu / Debian o una llamada del kernel o algo así.
fuente

case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esac¿Te refieres a algo como esto?i386,i686yx86_64casos en base auname -m, pero nada dearm??... o, al menos, nada que identificaarmhf,armeloarm64) .uname -mescupe la placa de brazo específica,armv7lpor ejemplo. No dice explícitamente si se trata dearmel,armhfoarm64- que es lo que necesito$(arch)para terminar como el fin de eliminar a las arquitecturas de sistemas operativos incompatibles con.Respuestas:
generará la arquitectura primaria de la máquina en la que se ejecuta. Esto será
armhfen una máquina que ejecute ARM Debian de 32 bits o Ubuntu (o un derivado),arm64en una máquina que ejecute ARM de 64 bits.Tenga en cuenta que la arquitectura en ejecución puede ser diferente de la arquitectura de hardware o incluso la arquitectura del núcleo. Es posible ejecutar
i386Debian en una CPU Intel o AMD de 64 bits, y creo que es posible ejecutararmhfen una CPU ARM de 64 bits. Incluso es posible tener principalmentei386binarios (por lo que la arquitectura principal esi386) en unamd64núcleo ...fuente