खोज…


वाक्य - विन्यास

  • \ C (न्यूलाइन को छोड़कर कोई भी एक वर्ण)
  • 'सिंगल कोट्स को छोड़कर सभी शाब्दिक'; 'यह:' \ 'एक एकल उद्धरण है'
  • $ 'only \\' और 'विशेष हैं; \ n = न्यूलाइन आदि। '
  • "$ चर और अन्य पाठ? \" \\\ $ \ `विशेष हैं"

नए वर्ण और नियंत्रण वर्ण

एक सिंगल-स्ट्रिंग या डबल-उद्धृत स्ट्रिंग में एक नई रेखा शामिल की जा सकती है। ध्यान दें कि बैकस्लैश-न्यूलाइन में एक नई लाइन नहीं होती है, लाइन ब्रेक को अनदेखा किया जाता है।

newline1='
'
newline2="
"
newline3=$'\n'
empty=\

echo "Line${newline1}break"
echo "Line${newline2}break"
echo "Line${newline3}break"
echo "No line break${empty} here"

डॉलर के उद्धरण के अंदर, बैकस्लैश-लेटर या बैकस्लैश-ऑक्टल का उपयोग कई अन्य प्रोग्रामिंग भाषाओं की तरह, नियंत्रण वर्ण सम्मिलित करने के लिए किया जा सकता है।

echo $'Tab: [\t]'
echo $'Tab again: [\009]'
echo $'Form feed: [\f]'
echo $'Line\nbreak'

चर और कमांड प्रतिस्थापन के लिए दोहरे उद्धरण

चर प्रतिस्थापन का उपयोग केवल दोहरे उद्धरण चिह्नों के अंदर किया जाना चाहिए।

calculation='2 * 3'
echo "$calculation"         # prints 2 * 3
echo $calculation           # prints 2, the list of files in the current directory, and 3
echo "$(($calculation))"    # prints 6

दोहरे उद्धरण चिह्नों के बाहर, $var का मूल्य लेता var एक ग्लोब (वाइल्डकार्ड) पद्धति के रूप में प्रत्येक भाग, खाली स्थान के सीमांकित भागों में विभाजित करता है, और व्याख्या करता है। जब तक आप इस व्यवहार को नहीं चाहते, हमेशा दोहरे उद्धरण के अंदर $var डालें: "$var"

एक ही आदेश प्रतिस्थापन पर लागू होता है: "$(mycommand)" के उत्पादन में है mycommand , $(mycommand) विभाजन उत्पादन पर + ग्लोब का परिणाम है।

echo "$var"             # good
echo "$(mycommand)"     # good 
another=$var            # also works, assignment is implicitly double-quoted
make -D THING=$var      # BAD! This is not a bash assignment.
make -D THING="$var"    # good
make -D "THING=$var"    # also good

कमांड प्रतिस्थापनों को अपने स्वयं के उद्धृत संदर्भ मिलते हैं। मनमाने ढंग से नेस्टेड प्रतिस्थापन लिखना आसान है क्योंकि पार्सर लालच के बजाय पहले " चरित्र " खोज करने के लिए नेस्टिंग डेप्थ का ट्रैक रखेगा। स्टैकऑवरफ़्लो सिंटैक्स हाइलाइटर इस गलत, हालांकि उदाहरण के लिए।

echo "formatted text: $(printf "a + b = %04d" "${c}")" # “formatted text: a + b = 0000”

कमांड प्रतिस्थापन के लिए परिवर्तनीय तर्क को विस्तार के साथ-साथ डबल-कोट किया जाना चाहिए:

echo "$(mycommand "$arg1" "$arg2")"

शाब्दिक पाठ का उद्धरण

इस पैराग्राफ में सभी उदाहरण लाइन को प्रिंट करते हैं

!"#$&'()*;<=>?  @[\]^`{|}~

एक बैकस्लैश अगले चरित्र को उद्धृत करता है, अर्थात अगले चरित्र की शाब्दिक व्याख्या की जाती है। एक अपवाद एक नई लाइन है: बैकस्लैश-न्यूलाइन खाली स्ट्रिंग में फैलती है।

echo \!\"\#\$\&\'\(\)\*\;\<\=\>\?\ \ \@\[\\\]\^\`\{\|\}\~

एकल उद्धरण (आगे उद्धरण ' , जिसे एपोस्ट्रोफ के रूप में भी जाना जाता है) के बीच का सभी पाठ शाब्दिक रूप से छपा होता है। यहां तक कि बैकस्लैश खुद के लिए खड़ा है, और एक भी उद्धरण शामिल करना असंभव है; इसके बजाय, आप शाब्दिक स्ट्रिंग को रोक सकते हैं, एक बैकलेस के साथ शाब्दिक एकल उद्धरण शामिल कर सकते हैं, और शाब्दिक स्ट्रिंग को फिर से शुरू कर सकते हैं। इस प्रकार 4-वर्ण अनुक्रम '\'' प्रभावी रूप से एक एकल उद्धरण को शाब्दिक स्ट्रिंग में शामिल करने की अनुमति देता है।

echo '!"#$&'\''()*;<=>?  @[\]^`{|}~'
#          ^^^^

डॉलर-एकल-उद्धरण कई अन्य प्रोग्रामिंग भाषाओं $'…' तरह एक स्ट्रिंग शाब्दिक $'…' शुरू करता है, जहां बैकलैश अगले चरित्र को उद्धृत करता है।

echo $'!"#$&\'()*;<=>?  @[\\]^`{|}~'
#           ^^            ^^

डबल उद्धरण " अर्द्ध शाब्दिक तार जहां केवल पात्रों परिसीमित " \ $ और ` उनके विशेष अर्थ बरकरार रहती है। इन पात्रों को उनके सामने एक बैकस्लैश की आवश्यकता होती है (ध्यान दें कि यदि बैकस्लैश का अनुसरण किसी अन्य चरित्र द्वारा किया जाता है, तो बैकस्लैश रहता है)। डबल कोट ज्यादातर तब उपयोगी होते हैं जब एक चर या कमांड प्रतिस्थापन शामिल होते हैं।

echo "!\"#\$&'()*;<=>?  @[\\]^\`{|}~"
#      ^^                 ^^  ^^
echo "!\"#\$&'()*;<=>?  @[\]^\`{|}~"
#      ^^                 ^  ^^      \[ prints \[

अंत में, सावधान ! डबल कोट के अंदर इतिहास के विस्तार को ट्रिगर करता है: "!oops" oops युक्त एक पुरानी कमांड के लिए दिखता है; "\!oops" इतिहास विस्तार नहीं करता है, लेकिन बैकलैश रखता है। लिपियों में ऐसा नहीं होता।

दोहरे उद्धरण और एकल उद्धरण के बीच अंतर

दोहरे उद्धरण एकल बोली
चर विस्तार की अनुमति देता है चर विस्तार को रोकता है
सक्षम होने पर इतिहास विस्तार की अनुमति देता है इतिहास के विस्तार को रोकता है
कमांड प्रतिस्थापन की अनुमति देता है प्रतिस्थापन को रोकता है
* और @ का विशेष अर्थ हो सकता है * और @ हमेशा शाब्दिक होते हैं
दोनों एकल उद्धरण या दोहरे उद्धरण शामिल हो सकते हैं एकल उद्धरण के अंदर एकल उद्धरण की अनुमति नहीं है
$ , ` , " , \ को उनके विशेष अर्थ को रोकने के लिए \ _ के साथ भाग सकते हैं ये सभी शाब्दिक हैं

गुण जो दोनों के लिए सामान्य हैं:

  • ग्लोबिंग से बचाता है
  • शब्द विभाजन को रोकता है

उदाहरण:

$ echo "!cat"
echo "cat file"
cat file
$ echo '!cat'
!cat
echo "\"'\""
"'"
$ a='var'
$ echo '$a'
$a
$ echo "$a"
var


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow