Próbuję napisać skrypt, który określi działania w oparciu o architekturę maszyny. Używam już uname -m
zebrać linię architektura, jednak nie wiem, jak wiele architektur ARM istnieje, ani nie wiem, czy ktoś jest armhf
, armel
albo arm64
.
Ponieważ jest to wymagane dla tego skryptu, aby ustalić, czy części skryptu mogą być uruchomione, czy nie, próbuję znaleźć prosty sposób, aby ustalić, czy architektura jest armhf
, armel
lub arm64
. Czy istnieje jakiś jeden-liner lub proste polecenia, które mogą być wykorzystane do produkcji albo armhf
, armel
, lub arm64
?
Skrypt został napisany specjalnie dla systemów Debian i Ubuntu, dlatego właśnie w tym celu oznaczam go tagiem (automatycznie się wyłącza, jeśli nie korzystasz z jednej z tych dystrybucji, ale można to również zastosować w dużo szerszy sposób, jeśli komendy istnieją)
EDYCJA: Niedawno dowiedziałem się, że Armel nie żyje, a twórcy oprogramowania arm64 (PPA lub wirtualni) nie są najbardziej stabilni. Mam więc wyszukiwanie wieloznaczne arm*
i zakładam, że armhf, ale nadal konieczne jest wymyślenie jednej linijki, która zwraca jedną z trzech - niezależnie od tego, czy jest to polecenie Ubuntu / Debian, czy wywołanie jądra, czy coś takiego.
i386
, i686
i x86_64
przypadki, w oparciu o uname -m
, ale nic do arm??
... a przynajmniej nic, co identyfikuje armhf
, armel
lub arm64
) .
uname -m
wypluwa konkretną tablicę ramion - armv7l
na przykład. Nie mówi wprost, czy to jest armel
, armhf
czy arm64
- właśnie to muszę $(arch)
zakończyć, aby wyeliminować niekompatybilne architektury systemu operacyjnego.
case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esac
Czy widzisz coś takiego?