ग्लोब / विभाजन
मैं पहले ग्लोब / स्प्लिट ले जाऊंगा। @ स्टीफन ने जो उत्तर दिया है, वह उन शब्दों का सामान्य अर्थ में उपयोग कर रहा है। वे वास्तविक आदेश या ऐसा कुछ भी नहीं हैं, बस छद्म संचालन।
split("$test")
तत्वों की एक "सरणी" में "$ परीक्षण" ऊपर की सामग्री को विभाजित होगा।
glob(...)
तो इन तत्वों है कि इस तरह के रूप में खोल ग्लोबिंग वर्ण हो के किसी भी विस्तार करने के लिए ध्यान रखना होगा *
या श्रेणियों [1-2]
।
उदाहरण
कहो हमारी स्ट्रिंग $test
इस प्रकार है।
$ test="afile[1-2] afile[3-5]"
हम यह भी कहते हैं कि हमारे पास कुछ फाइलों के साथ एक निर्देशिका है।
$ ls -1
afile1
afile2
afile3
afile4
afile5
अब यदि हम बिना उद्धरणों के इसे प्रतिध्वनित करने का प्रयास करते हैं, तो आपको ध्यान देना चाहिए कि हमारी स्ट्रिंग रिक्त स्थान पर विभाजित हो गई, और फिर किसी भी गोलाकार अक्षर का विस्तार हुआ।
$ echo $test
afile1 afile2 afile3 afile4 afile5
हालाँकि अगर हम चर को उद्धृत करते हैं जब हम इसे एक तर्क के रूप में पारित करते हैं तो हमें echo
मूल शाब्दिक स्ट्रिंग मिलेगा।
$ echo "$test"
afile[1-2] afile[3-5]
चर विस्तार
चर विस्तार शब्द का अर्थ मूल ऑपरेशन को कवर करना है जो शेल इसके मूल संचालन के भाग के रूप में प्रदर्शन कर रहा है। शेल इनपुट को पार्स करने और फिर इस इनपुट को निष्पादित करने के लिए जिम्मेदार है, जब इसे सिंटैक्टिक रूप से सही समझा जाता है।
हमारे पिछले उदाहरण में। जब चर $test
को echo
निर्विवाद रूप से प्रस्तुत किया गया तो हम शेल को आगे बढ़ने के लिए कह रहे थे और उन तर्कों को विभाजित किया और फिर उन्हें गोलाकार किया।
जब यह उद्धृत किया गया था, तो हम अनिवार्य रूप से उस सुविधा को अक्षम कर रहे थे जो कभी चर (नों) के साथ हम दोहरे उद्धरण चिह्नों के साथ लिपटे थे।
उदाहरण
यहाँ ग्लोबिंग और स्प्लिटिंग के कुछ अतिरिक्त उदाहरण दिए गए हैं।
ग्लोब / विभाजन स्वचालित रूप से होता है
$ echo file{1..3}
file1 file2 file3
$ echo file{1..3} dir{a..b}
file1 file2 file3 dira dirb
$ echo dir{z..w} file{A..D}
dirz diry dirx dirw fileA fileB fileC fileD
$ echo dir{z..w} file{A..B} fileC
dirz diry dirx dirw fileA fileB fileC
ग्लोब / बंटवारे को दोहरे उद्धरण के माध्यम से अक्षम किया गया
$ echo "dir{z..w} file{A..B} fileC"
dir{z..w} file{A..B} fileC
$ echo "dir{z..w} file{A..B}"
dir{z..w} file{A..B}