निम्नलिखित को धयान मे रखते हुए:
$ ksh -c '1(){ echo hi;};1'
ksh: 1: invalid function name
$ dash -c '1(){ echo hi;};1'
dash: 1: Syntax error: Bad function name
$ bash -c '1(){ echo hi;};1'
bash: `1': not a valid identifier
bash: 1: command not found
$ mksh -c '1(){ echo hi;};1'
hi
असल में, मैं कार्यों की घोषणा करने के कोशिश कर रहा था 1
और 0
जिसके लिए shorthands होगा true
और false
, लेकिन जैसा कि आप देख सकते हैं मैं कार्यों में संख्यात्मक नामों का उपयोग कर के साथ समस्या हुई थी। उपनाम और दो अंकों के नामों के साथ समान व्यवहार होता है।
प्रश्न "क्यों" है? क्या यह POSIX द्वारा अनिवार्य है? या सिर्फ बोर्न-जैसा गोले का एक क्विक?
इससे संबंधित प्रश्न भी देखें ।
0
है true
शेल पटकथा लेखन में और 1
है false
(वास्तव में, किसी भी गैर शून्य गलत माना जाता है) के मामले किसी को भी पढ़ने के लिए इस अनजान है में,। यह अधिकांश अन्य प्रोग्रामिंग भाषाओं से पीछे की ओर है।
true
शेल में है। हालाँकि, अंकगणितीय विस्तार में $((...))
रिटर्न स्टेटस फ़्लिप किया जाता है - 1 है true
और 0 false
सी-भाषा सिंटैक्स के साथ संगति के लिए है। उदाहरण के लिए प्रयास करें bash -c 'echo $((1==1));echo $((1==2))'
कि मैं इस प्रश्न के बाहर क्या करने की कोशिश कर रहा था वास्तव में व्यवहार "उल्टा" था। मेरे उत्तर पर अंतिम उदाहरण यहां देखें कि वास्तव में मैं क्या करने की कोशिश कर रहा था। मूर्खतापूर्ण विचार, लेकिन फिर भी काम करता है