Ich versuche ein Skript zu schreiben, das Aktionen basierend auf der Architektur der Maschine ermittelt. Ich verwende bereits uname -m
die Architektur Linie zu sammeln, aber ich weiß nicht , wie viele ARM - Architekturen gibt es, noch weiß ich, ob man armhf
, armel
oder arm64
.
Da dies für dieses Skript erforderlich ist , um zu bestimmen , ob Teile des Skripts ausgeführt werden können oder nicht, ich versuche , einen einfachen Weg zu finden , um zu bestimmen , ob die Architektur ist armhf
, armel
oder arm64
. Gibt es einen einzeiligen oder einfachen Befehl, mit dem entweder , oder ausgegeben werden armhf
kann ?armel
arm64
Das Skript wurde speziell für Debian- und Ubuntu-Systeme geschrieben, und ich bezeichne dies als solches (es wird automatisch beendet, wenn Sie sich nicht in einem dieser Distributionen befinden, aber dies könnte auch auf eine viel breitere Art und Weise angewendet werden, wenn die Befehl (e) vorhanden
BEARBEITEN: Kürzlich erfahren, dass armel tot ist und arm64 Software Builder (PPA oder virtuell) nicht die stabilsten sind. Also habe ich eine Wildcard-Suche, arm*
die armhf findet und annimmt, aber es ist immer noch notwendig, einen Einzeiler zu finden, der einen der drei zurückgibt - ob es sich um einen Ubuntu / Debian-Befehl oder einen Kernel-Aufruf handelt oder so.
quelle
case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esac
Machst du so etwas?i386
,i686
undx86_64
Fälle basierend aufuname -m
, aber nichts fürarm??
... oder zumindest nichts, identifizierenarmhf
,armel
oderarm64
) .uname -m
die spezifische Armplatte aus -armv7l
zum Beispiel. Es muss nicht ausdrücklich sagen , ob esarmel
,armhf
oderarm64
- das ist , was ich brauche ,$(arch)
mit wie um auszusondern unvereinbar OS - Architekturen enden.Antworten:
Gibt die primäre Architektur des Computers aus, auf dem es ausgeführt wird. Dies wird
armhf
auf einer Maschine sein, auf der 32-Bit ARM Debian oder Ubuntu (oder ein Derivat) ausgeführt wird,arm64
auf einer Maschine, auf der 64-Bit ARM ausgeführt wird.Beachten Sie, dass sich die ausgeführte Architektur möglicherweise von der Hardwarearchitektur oder sogar von der Kernelarchitektur unterscheidet. Es ist möglich,
i386
Debian auf einer 64-Bit-Intel- oder AMD-CPU auszuführen, und ich glaube, es ist möglich, Debian auf einer 64-Bitarmhf
-ARM-CPU auszuführen . Es ist sogar möglich, hauptsächlichi386
Binärdateien (also die primäre Architekturi386
) auf einemamd64
Kernel zu haben ...quelle