यह मेरे पहले के प्रश्न का अनुसरण है ।
मैं इस आसान स्निपिट का उपयोग करके / etc / passwd में फ़ील्ड की संख्या को मान्य कर रहा हूं। निम्नलिखित उदाहरण में, उपयोगकर्ताओं 'fieldcount1' और 'fieldcount2' में फ़ील्ड की गलत संख्या है:
$ awk -F: ' NF!=7 {print}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
fieldcount2:blah::blah:1002:100:fieldcount2:/home/fieldcount2:/bin/bash:
$ echo $?
0
जैसा कि आप देखेंगे, awk 0. की वापसी स्थिति के साथ बाहर निकल जाएगा। यह दृष्टिकोण से, यहाँ कोई समस्या नहीं है।
मैं इस अजीब कथन को एक शेल स्क्रिप्ट में शामिल करना चाहूंगा। मैं उन सभी लाइनों को प्रिंट करना चाहूंगा जो त्रुटि हैं, और रिटर्न कोड को 1 (त्रुटि) सेट करें।
मैं एक विशेष निकास स्थिति को मजबूर करने की कोशिश कर सकता हूं, लेकिन फिर केवल एक लाइन को प्रिंट करता है:
$ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
$ echo $?
1
क्या मैं, 1 ’की वापसी स्थिति के साथ बाहर निकलने के लिए जाग सकता हूं, और सभी पंक्तियों को प्रिंट कर सकता हूं जो मेल खाते हैं?
; echo $?
बाद कुछ इस तरह से जोड़कर इस awk statement की return स्थिति पर कब्जा करने की कोशिश कर रहा हूँ । हालाँकि,echo $?
कभी नहीं चलाया जाता है क्योंकिEND {exit err}'
स्क्रिप्ट को समाप्त कर देता है। क्या बाहर निकलने के बिना वापसी की स्थिति निर्धारित करने का एक तरीका है?