मैं कुछ अजीब समस्याओं के साथ हाल ही में कर रहा हूँ। अपनी स्क्रिप्ट को सरल बनाने की कोशिश करते हुए, मैं इस छोटे से कोड के साथ आया:
$ o(){ echo | while read -r; do return 0; done; echo $?;}; o
0
$ o(){ echo | while read -r; do return 1; done; echo $?;}; o
1
return
मुद्रण के बिना समारोह से बाहर निकलना चाहिए था $?
, है न? ठीक है, तो मैंने जाँच की कि क्या मैं अकेले पाइप से लौट सकता हूँ:
$ echo | while read -r; do return 1; done
bash: return: can only `return' from a function or sourced script
while
लूप के बिना भी ऐसा ही होता है :
$ foo(){ : | return 1; echo "This should not be printed.";}
$ foo
This should not be printed.
क्या मुझे यहाँ कुछ याद आ रहा है? एक Google खोज इस बारे में कुछ नहीं लाया! मेरा बैश संस्करण ४.२.३ Whe (१) है-डेबियन व्हीज़ी पर।
while
प्रजनन की आवश्यकता नहीं है? यह बिंदु से विचलित करता है।
while
पाश एक पाइप के साथ एक बहुत ही सामान्य उपयोग है return
। दूसरा उदाहरण इस बिंदु पर अधिक सीधे है, लेकिन यह ऐसा कुछ है जो मुझे विश्वास नहीं है कि कोई भी कभी भी उपयोग करेगा ...