बैश (और अन्य यूनिक्स गोले), 32 (33) बाइट्स
पहला और दूसरा प्रयास:
case `echo|od` in *5*)echo B;;*)echo L;;esac # portable
[[ `echo|od` =~ 5 ]]&&echo B||echo L # non-portable
डेनिस के लिए धन्यवाद, छोटा संस्करण:
od<<<a|grep -q 5&&echo L||echo B # non-portable
echo|od|grep -q 5&&echo B||echo L # portable
echoउपयोगिता हेक्स मान के साथ एक नई पंक्ति आउटपुट, 0Aहै, और कोई अन्य उत्पादन। इसके लिए <<<aहै 61 0A।
odउपयोगिता, डिफ़ॉल्ट रूप से, इनपुट दो-बाइट शब्दों के रूप में, की व्याख्या शून्य गद्देदार अगर बाइट की संख्या विषम है, और अष्टाधारी में धर्मान्तरित। इसका परिणाम गूंज के रूप 0A 00में होता है, जिसे 005000बड़े-एंडियन या 000012छोटे-एंडियन में परिवर्तित किया जाता है । छोटे-एंडियन और बड़े-एंडियन में 61 0Aहो जाता 005141है 060412। आयुध डिपो से भरा उत्पादन भी अर्थ हम उपयोग नहीं कर सकते पता और आकार डेटा शामिल हैं 0, 1या 2परीक्षण के लिए।
सिस्टम के एंडियननेस को उजागर करने के लिए कमांड को अच्छी तरह से परिभाषित किया गया है। से मानक :
संख्यात्मक मूल्यों की व्याख्या करते समय उपयोग किया जाने वाला बाइट क्रम कार्यान्वयन-परिभाषित है, लेकिन उस क्रम के अनुरूप होगा जिसमें सिस्टम पर इसी प्रकार का एक मेमोरी में संग्रहीत होता है।
संगतता नोट
मुझे यकीन नहीं है कि अगर echo|odउनके आसपास कोई दोहरा उद्धरण नहीं है, जिसके परिणामस्वरूप [तीन-शब्द तर्क में case] सभी प्रणालियों पर समर्थित है। मुझे यकीन नहीं है कि सभी सिस्टम शेल स्क्रिप्ट का समर्थन करते हैं, जिसमें कोई भी समाप्ति न्यूलाइन नहीं है। मैं ज्यादातर निश्चित हूं, लेकिन बड़े-एंडियन सिस्टम पर पैडिंग बाइट को जोड़ने के साथ ओड के व्यवहार का 100% नहीं। यदि आवश्यक हो, echo aतो पोर्टेबल संस्करणों के लिए उपयोग किया जा सकता है। सभी स्क्रिप्ट बश, ksh और zsh में काम करती हैं, और पोर्टेबल डैश में काम करती हैं।