मैंने बहुत सारी शेल स्क्रिप्ट्स को हैक किया है, और कभी-कभी सबसे आसान चीजें मुझे चकरा देती हैं। आज मैं एक ऐसी पटकथा पर भागा, जिसने :
(कोलोन) बैश बिलिन का व्यापक उपयोग किया ।
Documenation सरल पर्याप्त लगता है:
: (a colon) : [arguments]
तर्कों का विस्तार करने और पुनर्निर्देशन से परे कुछ भी न करें। वापसी की स्थिति शून्य है।
हालाँकि, मैंने पहले केवल शेल विस्तार के प्रदर्शनों में इसका उपयोग देखा है। इस संरचना के व्यापक उपयोग के बाद मैं जिस स्क्रिप्ट में चला, उसका उपयोग मामला:
if [ -f ${file} ]; then
grep some_string ${file} >> otherfile || :
grep other_string ${file} >> otherfile || :
fi
वहाँ वास्तव में सैकड़ों क्रेप्स थे, लेकिन वे सिर्फ एक ही अधिक हैं। कोई इनपुट / आउटपुट रीडायरेक्ट उपर्युक्त सरल संरचना के अलावा मौजूद नहीं है। स्क्रिप्ट में बाद में कोई रिटर्न मान चेक नहीं किए जाते हैं।
मैं इसे एक बेकार निर्माण के रूप में पढ़ रहा हूं जो "या कुछ भी नहीं" कहता है। "या कुछ भी नहीं" की सेवा के साथ इन उद्देश्यों को क्या समाप्त कर सकता है? किस मामले में यह निर्माण || :
सभी उदाहरणों से अलग होने की तुलना में एक अलग परिणाम का कारण होगा ?
:
जिसे मैं देख सकता हूं वह है विकल्प के रूप में उपयोग करनाtrue
। शायदerrexit
सेट किया गया है और लेखक कुछ आदेशों की निकास स्थिति के बारे में परवाह नहीं करता है।