सामान्य नियम यह है कि डबल कोट्स अभी भी उद्धरणों के भीतर चर के विस्तार की अनुमति देते हैं, और सिंगल कोट्स नहीं करते हैं। पढ़ते रहिये।
सरल पाठ के साथ उद्धरण
यदि आप टेक्स्ट के कुछ शब्दों को बस संलग्न कर रहे हैं, तो इससे कोई फर्क नहीं पड़ता कि आप किस का उपयोग करते हैं, क्योंकि वे दोनों एक ही काम करेंगे। उदाहरण के लिए, ये दो आदेश दोनों टेस्ट निर्देशिका नामक निर्देशिका बनायेंगे:
mkdir 'Test Directory' mkdir 'Test Directory'
अधिक अनुभवी प्रकार शायद ध्यान दें कि यदि आप चाहें तो आप mkdir टेस्ट निर्देशिका का भी उपयोग कर सकते हैं।
शैल परिवर्तनीय विस्तार
सिंगल और डबल कोट्स के बीच का अंतर अधिक महत्वपूर्ण हो जाता है जब आप कमांड लाइन पर वैरिएबल से निपट रहे हैं-डिफ़ॉल्ट रूप से, बैश पूर्ण स्ट्रिंग में $ test जैसे चर का विस्तार करने जा रहा है। सबसे पहले, हम चर आवंटित करेंगे:
test='This is a test'
अब आप इस चर का उपयोग कमांड लाइन पर कर सकते हैं, इस तरह, जिसे बस आउटपुट करना चाहिए यह एक परीक्षण है कंसोल के लिए:
echo $test
यहां वह जगह है जहां डबल और सिंगल कोट्स के बीच का अंतर अधिक स्पष्ट हो जाता है-जब आप सिंगल कोट्स का उपयोग करते हैं तो चर का विस्तार नहीं किया जा रहा है। उदाहरण के लिए, यदि आप यह आदेश चलाते हैं:
echo '$test'
जब आप सिंगल कोट्स का उपयोग करते हैं तो आपको कमांड लाइन पर '$ test' के अलावा कुछ भी नहीं दिखाई देगा, लेकिन जब आप डबल कोट्स का उपयोग करते हैं तो यह ठीक से आउटपुट होगा:
जब आप कमांड लाइन पर कमांड का विस्तार करने के लिए 'वर्ण का उपयोग करते हैं तो वही काम काम करता है। उदाहरण के लिए, कहें कि आप इसका उपयोग करना चाहते हैं लोक निर्माण विभाग किसी अन्य कमांड के भीतर से कमांड - आपने इसे विस्तारित करने के लिए खोल को बताने के लिए बैकटिक्स का उपयोग किया होगा:
echo `pwd`/test
अगर आप अपने घर के फ़ोल्डर में थे तो आप इस तरह दिखने वाले आउटपुट देखेंगे:
/home/geek/test
कहें, उदाहरण के लिए, आप उस फ़ोल्डर में हैं जिसमें पथ में एक स्थान है, और आप वर्तमान निर्देशिका में फ़ाइल के लिए प्रतीकात्मक लिंक बनाने के लिए ln कमांड का उपयोग करना चाहते हैं। Ln कमांड का उपयोग करते समय आपको आमतौर पर पूर्ण पथ निर्दिष्ट करने की आवश्यकता होती है, इसलिए टाइपिंग को सहेजने के लिए 'pwd` का उपयोग करना अधिक आसान होता है।
देखो जब आप उद्धरणों में संलग्न किए बिना कमांड का प्रयास करते हैं और उपयोग करते हैं तो क्या होता है:
ln –s `pwd`/test /home/geek/linkedname
ln –s '`pwd`/filename' /some/other/path
एक और ठोस उदाहरण के लिए, मान लीजिए कि हमारे पास इस उदाहरण की तरह एक फ़ोल्डर संरचना है, जहां सभी फ़ाइल नामों में रिक्त स्थान हैं:
for f in *.zip;do unzip $f;done
ऊप्स! ऐसा लगता है कि यह काम नहीं किया।
for f in *.zip;do unzip '$f';done
अब जब भी कमांड लूप के माध्यम से जाता है, तो यह वास्तव में इस तरह की कमांड चलाने जा रहा है:
unzip 'test 1.zip'
निस्संदेह यह निर्देशिका में प्रत्येक फ़ाइल के लिए एक समान कमांड के माध्यम से लूप होगा और चलाएगा।
पिछली समीक्षा
अब जब हम उदाहरणों के माध्यम से चले गए हैं, तो हम इसे याद करते समय तुरंत समीक्षा करेंगे:
डबल उद्धरण
- जब आप चर को घेरना चाहते हैं या स्ट्रिंग के अंदर खोल विस्तार का उपयोग करना चाहते हैं तो इसका उपयोग करें।
- भीतर के सभी पात्रों को $ या 'को छोड़कर नियमित वर्णों के रूप में व्याख्या किया जाता है जिसे खोल पर विस्तारित किया जाएगा।
एकल कोट
एकल उद्धरणों के भीतर सभी वर्णों को एक स्ट्रिंग वर्ण के रूप में व्याख्या किया जाता है।
और इस प्रकार उद्धरण के सबक समाप्त होता है। बुद्धिमानी से उनका प्रयोग करें।