शेल कमांड निष्पादन से पहले कमांड लाइन को बदल सकता है। दोनों शेल और grep
कुछ वर्णों के विशेष अर्थ को हटाने के लिए उद्धरण का उपयोग कर सकते हैं। बहरहाल, grep
और गोले के अलग-अलग विशेष चरित्र हैं। इसके अलावा, बिना किसी विशेष वर्ण के जो मौजूदा विस्तार के परिणामस्वरूप नहीं था, शेल द्वारा कमांड निष्पादन से पहले हटा दिया जाता है।
echo '[]' | grep '[]'
शेल तर्क []
को प्रेषित करता है grep
और इसे एक विकृत ब्रैकेट अभिव्यक्ति के रूप में पार्स किया जाता है grep
।
echo '[]' | grep \[]
ऊपर, हम एक समान मामला देख सकते हैं। बैकलैश को हटा दिया जाता है और []
तर्क के रूप में प्रसारित कर दिया जाता है grep
। grep
एक विकृत ब्रैकेट अभिव्यक्ति को पहचानता है।
echo '[]' | grep '\[]'
अंत में, इस मामले में, उद्धरण शेल द्वारा हटा दिए जाते हैं और \[]
तर्क के रूप में प्रेषित किया जाता है grep
, लेकिन इस विशिष्ट मामले में, शाब्दिक ब्रैकेट के रूप \[
में व्याख्या की जाती है grep
। खोल द्वारा विशेष वर्ण के रूप में बैकस्लैश की व्याख्या को रोकने के लिए उद्धरणों की आवश्यकता होती है।
OS POSIX विनिर्देशन ।
bash
शामिल) के साथ कुछ गोले में ,!
अभी भी दोहरे उद्धरण चिह्नों में विस्तारित है, केवल एकल उद्धरण इसके विस्तार (या शेल विकल्प को चालू करना) को रोक देगा।