Basit bir tek gömlek arıyorsanız, 64 veya 32 döndüren bulduğum en güvenilir çözüm budur . ARM kullanıp kullanmamanız önemli değil ve bash veya sh kullanan herhangi bir sistemde çalışması gerekiyor .
Dikkat, bu sistemin 32 bit veya 64 bit olduğunu varsayar. 8 - 16 veya başka bir bit mimarisini tespit etmeniz gerekiyorsa aşağıdaki açıklamalarıma bakınız.
[$ ((0xffffffff)) -eq -1] && eko 32 || yankı 64
Burada ne dolaşıyor?
Mantık çok basittir ve bilgisayarların imzalı tamsayıları nasıl depoladıklarına bağlı olarak kısalır. 32-bit bir mimaride işaretli tamsayıları depolamak için kullanabileceği 32 bit varken 64-bit bir mimaride 64 bit! Başka bir deyişle, saklanabilecek tam sayı kümesi sonludur. Bu kümenin yarısı negatif sayıları, yarısı pozitif sayıları temsil eder. -1'ye eşit işaretli tamsayı, bu mimari için belirli sayıda bitte depolanabilen en büyük sayı olarak temsil edilir. 32-bit bir sistemde -1, 0xFFFFFFFF (hepsi 1'e eşit olan 32 bit, onaltılık) değeriyle gösterilebilir. 64 bitlik bir sistemde, 0xFFFFFFFF, 4,294,967,295, üs 10'a karşılık gelirken, 0xFFFFFFFFFFFFFFFF -1 ile aynıdır. Bunun 0xFF ve 0xFFFF'de -1'e eşit olacak şekilde 8- veya 16 bit sistemler için nasıl kolayca ölçeklenebileceğini görebilirsiniz,
uname -m
veuname -m
?