bash
कई मेटाचैकर्स को परिभाषित करता है । से man bash
:
मेटाचैकर
एक चरित्र, जब अयोग्य, शब्दों को अलग करता है। निम्नलिखित में से एक:
| &; () <> स्पेस टैब
क्योंकि मेटाचेचर्स अलग-अलग शब्दों को कहते हैं, इससे कोई फर्क नहीं पड़ता कि वे रिक्त स्थान से घिरे हैं। पाइप प्रतीक, |
एक मेटाचैकर है और इसलिए, जैसा कि आपने देखा, उसे इसके चारों ओर रिक्त स्थान की आवश्यकता नहीं है।
ध्यान दें कि [
, ]
, {
, }
, और =
कर रहे हैं नहीं अक्षरों से परे। इसके विपरीत, उनका अर्थ, इस बात पर दृढ़ता से निर्भर करता है कि वे खाली जगह से घिरे हैं या नहीं।
रिक्त स्थान कब हैं और इसकी आवश्यकता के उदाहरण नहीं हैं
जैसा कि आपने देखा, इससे कोई फर्क नहीं पड़ता कि |
रिक्त स्थान घिरा हुआ है या नहीं । आइए कुछ उदाहरणों पर विचार करें जो आमतौर पर उपयोगकर्ताओं को भ्रमित करते हैं। विचार करें:
$ (date)
Sun Mar 1 12:47:07 PST 2015
ऊपर के परेंस बल date
भाग को उप-क्रम में चलाने के आदेश देता है। क्योंकि (
और )
मेटाचट्रैक्टर्स हैं, इसलिए किसी स्थान की आवश्यकता नहीं है। इसके विपरीत:
$ {date}
bash: {date}: command not found
के बाद से {
और }
कर रहे हैं नहीं मेटावर्ण, खोल व्यवहार करता है {date}
एक शब्द के रूप में। date
कमांड की तलाश करने के बजाय , यह नाम की कमांड की तलाश करता है {date}
। क्योंकि यह एक नहीं मिलता है, एक त्रुटि परिणाम।
एक और आम समस्या है test
कमांड है। निम्नलिखित कार्य सफलतापूर्वक:
$ [ abc ] && echo Yes
Yes
रिक्त स्थान निकालें और एक त्रुटि उत्पन्न होती है:
$ [abc] && echo Yes
bash: [abc]: command not found
क्योंकि [
और ]
कर रहे हैं नहीं मेटाचैकर , इसलिए शेल [.bashrc]
एक ही शब्द के रूप में व्यवहार करता है और परिणाम, date
उदाहरण की तरह , एक त्रुटि है।
असाइनमेंट स्टेटमेंट स्पेस के प्रति भी संवेदनशील होते हैं। निम्नलिखित असाइनमेंट सफल है:
$ v=date
$ echo $v
date
एक स्थान जोड़ें और असाइनमेंट विफल हो जाता है:
$ v= date
Sun Mar 1 12:55:05 PST 2015
ऊपर में, शेल अस्थायी रूप से सेट होता है v
से खाली करने के लिए होता है और फिर date
कमांड निष्पादित करता है ।
इससे पहले कि =
कोई विफलता का कारण बनता है एक अलग स्थान जोड़ें :
$ v =date
bash: v: command not found
यहां, शेल v
तर्क के साथ कमांड निष्पादित करने का प्रयास करता है =date
। त्रुटि इसलिए है क्योंकि इसमें कोई आदेश नाम नहीं मिला v
।