Bash (ve diğer unix kabukları), 32 (33) bayt
Birinci ve ikinci deneme:
case `echo|od` in *5*)echo B;;*)echo L;;esac # portable
[[ `echo|od` =~ 5 ]]&&echo B||echo L # non-portable
Dennis sayesinde, kısa versiyon:
od<<<a|grep -q 5&&echo L||echo B # non-portable
echo|od|grep -q 5&&echo B||echo L # portable
Yardımcı echo
program, hex değeri 0A
olan ve başka bir çıktı içermeyen yeni bir satır çıkarır . İçin <<<a
öyle61 0A
.
Yardımcı od
program, varsayılan olarak, girişi iki baytlık sözcükler olarak kullanır, baytların sayısı tek ise sıfır dolgulu ve sekizlik değerine dönüştürür. Bu, eko çıktısının çıkması ile sonuçlanır 0A 00
, ki bunlar 005000
büyük-endian veya 000012
küçük-endian olarak dönüştürülür . 61 0A
olur 005141
biraz endian ve 060412
büyük endian içinde. Od dolu çıkışı da biz kullanamaz anlam adres ve boyut verileri içerir 0
, 1
ya da2
test için.
Komut, sistemin doğruluğunu ortaya çıkarmak için iyi tanımlanmıştır. Gönderen standardı :
Sayısal değerlerin yorumlanmasında kullanılan bayt sırası, uygulama tarafından tanımlanır, ancak karşılık gelen tipte bir sabitin sistemdeki belleğe kaydedildiği sıraya karşılık gelir.
Uyumluluk notları
Tüm sistemlerde echo|od
çift tırnak işareti içermeyen (yani üç kelimeli bir argümanla sonuçlanan) arkasına çift tırnak işareti koyduğundan emin değilim case
. Tüm sistemlerin sonlandırıcı yeni satır olmadan kabuk komut dosyalarını destekleyip desteklemediğinden emin değilim. Büyük-endian sistemlerine doldurma baytı ekleyerek od davranışının% 100'ünden emin değilim. Gerekirse echo a
, taşınabilir sürümler için kullanılabilir. Tüm scriptler bash, ksh ve zsh olarak, taşınabilirler ise çizgi şeklinde çalışır.