मैं था एक सा निम्नलिखित व्यवहार को खोजने के लिए परेशान:
bash$ false
bash$ true | echo $?
0
bash$ ksh
ksh$ false
ksh$ true | echo $?
0
ksh$ zsh
zsh$ false
zsh$ true | echo $?
1
Intuitively, यह हो जाता है zsh तरह लग रहा है सही है, जबकि पार्टी और ksh गलत हैं। $?
'हाल ही में निष्पादित पाइपलाइन की निकास स्थिति' है, जो प्रत्येक मामले में 1 होना चाहिए। ध्यान दें कि false | echo $?
ksh
और bash
दोनों में 0 प्रिंट करता है। क्या इस बिंदु पर मानक लचीला है (यानी, व्यवहार निर्दिष्ट नहीं है), या bash
और ksh
यहां गैर-अनुपालनशील हैं? मुझे यह जानकर भी उत्सुकता है कि यह गलत पाने के लिए क्या बाश और क्षीर कर रहे हैं।
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)
Copyright (C) 2007 Free Software Foundation, Inc.
$ zsh --version
zsh 4.3.11 (i386-apple-darwin11.0)
$ ksh --version
version sh (AT&T Research) 1993-12-28 s+
जब मैंने आपके 'बैश' उदाहरण को चलाया, तो मुझे '1',' 0' नहीं मिला। – lurker
बैश का कौन सा संस्करण? मेरे सिस्टम पर आपके zsh आउटपुट के समान ही उत्पादन करता है। – Mat
कृपया सभी के लिए खोल के संस्करण का उल्लेख करें। मेरे साथ 'zsh' वास्तव में '0' वापस आ गया। इसलिए सत्यापित करने में असमर्थ। –