शेल पटकथा लेखन में की आरएचएस पर चर के हवाले नहीं बनाम का हवाला देते हुए, क्या इन 2 के बीच अंतर है क्या मुझे दूसरे पर एक का उपयोग करना चाहिए?चर काम
चर काम
उत्तर
Advanced Bash-Scripting Guide: Chapter 5: Quoting
जब एक चर संदर्भित है, यह आम तौर पर दोहरे उद्धरण में अपने नाम संलग्न करने की सलाह दी जाती है। यह उद्धृत स्ट्रिंग के भीतर सभी विशेष वर्णों की पुनरावृत्ति को रोकता है। शब्द विभाजन को रोकने के लिए डबल कोट्स का उपयोग करें। में संलग्न एक तर्क स्वयं को एकल शब्द के रूप में प्रस्तुत करता है, भले ही इसमें व्हाइटस्पेस विभाजक शामिल हों।
मुझे लगता है कि यहां कोई बड़ा अंतर नहीं है। हां, यह वैरिएबल को डबल कोट्स में संलग्न करने की सलाह दी जाती है जब उस चर का संदर्भ दिया जा रहा है। हालांकि, $x
को आपके प्रश्न में यहां संदर्भित नहीं किया गया प्रतीत होता है।
y=$x
स्वयं को प्रभावित नहीं करता है कि सफेद जगहों को कैसे नियंत्रित किया जाएगा। यह केवल तभी होता है जब $y
वास्तव में मामलों का हवाला देते हुए उपयोग किया जाता है। उदाहरण के लिए:
$ x=" a b "
$ y=$x
$ echo $y
a b
$ echo "$y"
a b
कोई (अच्छा) कारणों जब अपने आप ही एक बयान के रूप में इस्तेमाल एक चर असाइनमेंट की बोली दोगुना करने के लिए आरएचएस हैं।
असाइनमेंट कथन का आरएचएस शब्द विभाजन (या ब्रेस विस्तार) आदि के अधीन नहीं है, इसलिए सही तरीके से असाइन करने के लिए कोट्स की आवश्यकता नहीं हो सकती है। अन्य सभी विस्तार (जहां तक मुझे पता है) आरएचएस पर होते हैं लेकिन डबल कोट्स में भी होते हैं, इसलिए उद्धरण कोई उद्देश्य नहीं देता है।
कहा जा रहा है कि आरएचएस उद्धृत करने के लिए कारण नहीं हैं। अर्थात् how to address error "bash: !d': event not found" in Bash command substitution (विशेष रूप से मेरा उत्तर और अमीर का जवाब देखें)।
यहां कुछ अन्य उदाहरण हैं: (वर्तमान निर्देशिका t.sh
में दो फ़ाइलों और file
होने)
a='$(ls)' # no command substitution
b="$(ls)" # command substitution, no word splitting
c='*' # no filename expansion
d="*" # no filename expansion
e=* # no filename expansion
f=$a # no expansions or splittings
g="$a" # no expansions or splittings
h=$d # no expansions or splittings
echo ---'$a'---
echo $a # no command substitution
echo ---'$b'---
echo $b # word splitting
echo ---'"$b"'---
echo "$b" # no word splitting
echo ---'$c'---
echo $c # filename expansion, word splitting
echo ---'"$c"'---
echo "$c" # no filename expansion, no word splitting
echo ---'$d'---
echo $d # filename expansion, word splitting
echo ---'"$d"'---
echo "$d" # no filename expansion, no word splitting
echo ---'"$e"'---
echo "$e" # no filename expansion, no word splitting
echo ---'$e'---
echo $e # filename expansion, word splitting
echo ---'"$f"'---
echo "$f" # no filename expansion, no word splitting
echo ---'"$g"'---
echo "$g" # no filename expansion, no word splitting
echo ---'$h'---
echo $h # filename expansion, word splitting
echo ---'"$h"'---
echo "$h" # no filename expansion, no word splitting
आउटपुट:
---$a---
$(ls)
---$b---
file t.sh
---"$b"---
file
t.sh
---$c---
file t.sh
---"$c"---
*
---$d---
file t.sh
---"$d"---
*
---"$e"---
*
---$e---
file t.sh
---"$f"---
$(ls)
---"$g"---
$(ls)
---$h---
file t.sh
---"$h"---
*
एक दिलचस्प बात यह है कि सूचना के लिए आदेश प्रतिस्थापन चर में होता है असाइनमेंट अगर वे डबल कोट्स में हैं, और यदि आरएचएस को "$(ls)"
के रूप में स्पष्ट रूप से दिया गया है और "$a"
के रूप में स्पष्ट रूप से नहीं है ..
- 1. कमान बैश चर काम
- 2. अजगर चर संदर्भ काम
- 3. अजीब चर काम
- 4. उदाहरण के पायथन सदस्य चर सदस्य सदस्य चर जैसे काम करता है, और कुछ काम स्थिर चर
- 5. भारी चर के बाहर काम करना चाहिए?
- 6. CMAKE_INSTALL_PREFIX पर्यावरण चर - काम नहीं करता है?
- 7. काम
- 8. मेरा LISP एक अनबाउंड चर कैसे काम करता है?
- 9. जीएसपी: जाँच लें कि मॉडल (चर) काम नहीं कर रहा
- 10. नामस्थान में चर के साथ कैसे काम करें
- 11. स्थानीय चर उस्तरा में काम नहीं करते सहायकों
- 12. rspec में इंस्टेंस चर कैसे काम करते हैं?
- 13. रूबी: कक्षा चर के साथ काम करने वाला इनहेरिट कोड
- 14. ASP.NET पृष्ठ में स्थैतिक चर काम कहां करता है?
- 15. मेरे Django टेम्पलेट बूलियन चर काम नहीं कर रहा जावास्क्रिप्ट
- 16. Varchar चर कहां में काम नहीं कर रहा खंड
- 17. चर
- 18. बैश - चर चर
- 19. Jquery चर चर
- 20. चर
- 21. चर
- 22. चर
- 23. चर
- 24. चर
- 25. चर
- 26. चर
- 27. चर
- 28. चर
- 29. चर
- 30. $ _SESSION चर में कैशिंग चर?
यह सामान्य रूप से अच्छी सलाह है, लेकिन विशिष्ट मामले में ओपी का उल्लेख है, उद्धरण कोई उद्देश्य नहीं देता है। – user000001
वास्तव में, यह आम तौर पर अच्छी सलाह है (और यह लगभग आश्चर्यजनक है कि एबीएस से आ रहा है क्योंकि इसमें कम से कम अच्छे सुझाव देने और अच्छे अभ्यास को अनदेखा करने की प्रवृत्ति है) लेकिन यह पूछे जाने वाले प्रश्न से प्रासंगिक नहीं है। –
आप किस गाइड की सिफारिश करेंगे? –