Bash (dan shell unix lainnya), 32 (33) byte
Upaya pertama dan kedua:
case `echo|od` in *5*)echo B;;*)echo L;;esac # portable
[[ `echo|od` =~ 5 ]]&&echo B||echo L # non-portable
Berkat Dennis, versi yang lebih pendek:
od<<<a|grep -q 5&&echo L||echo B # non-portable
echo|od|grep -q 5&&echo B||echo L # portable
The echoutilitas output baris baru, dengan nilai hex 0A, dan tidak ada output lainnya. Untuk <<<aitu 61 0A.
The odutilitas, secara default, menafsirkan masukan sebagai kata-kata dua-byte, nol-empuk jika jumlah byte adalah aneh, dan bertobat untuk oktal. Ini menghasilkan output dari gema yang ditafsirkan sebagai 0A 00, yang dikonversi menjadi 005000big-endian atau 000012little-endian. 61 0Amenjadi 005141little-endian dan 060412big-endian. Output penuh od juga termasuk alamat dan data ukuran yang berarti kita tidak bisa menggunakan 0, 1atau 2untuk ujian.
Perintah didefinisikan dengan baik untuk mengekspos endianness sistem. Dari standar :
Urutan byte yang digunakan ketika menginterpretasikan nilai-nilai numerik adalah implementasi-didefinisikan, tetapi harus sesuai dengan urutan di mana konstanta dari tipe yang sesuai disimpan dalam memori pada sistem.
Catatan kompatibilitas
Saya tidak yakin apakah menempatkan echo|odbackquote tanpa tanda kutip ganda di sekitarnya [yang menghasilkan argumen tiga kata untuk case] didukung pada semua sistem. Saya tidak yakin apakah semua sistem mendukung skrip shell tanpa mengakhiri baris baru. Saya sebagian besar pasti tetapi tidak 100% dari perilaku od dengan menambahkan byte padding pada sistem big-endian. Jika perlu, echo abisa digunakan untuk versi portable. Semua skrip bekerja dalam bash, ksh, dan zsh, dan yang portabel bekerja di dash.