डबल उद्धरण और बैश संदर्भ मैनुअल के भीतर एकल उद्धरण


18

3.1.2.3 शीर्षक वाले दोहरे उद्धरण में, बाश मैनुअल कहता है:

दोहरे उद्धरणों ('' '') में वर्णों को जोड़ना '', '', '', '' और, जब इतिहास विस्तार सक्षम होता है, '' 'के अपवाद के साथ, उद्धरण के भीतर सभी वर्णों के शाब्दिक मूल्य को बनाए रखता है।

फिलहाल मैं एकल बोली ( ') से चिंतित हूं ।

यह विशेष अर्थ है, पूर्ववर्ती खंड में वर्णित है, खंड 3.1.2.2 है:

एकल उद्धरणों में वर्ण जोड़ना ( ') उद्धरणों के भीतर प्रत्येक वर्ण के शाब्दिक मूल्य को संरक्षित करता है। एकल उद्धरण के बीच एक एकल उद्धरण नहीं हो सकता है, तब भी जब एक बैकस्लैश द्वारा पूर्ववर्ती हो।

दो एक्सपोज़र को मिलाकर,

 echo "'$a'"

जहां चर aको परिभाषित नहीं किया गया है (इसलिए $a= अशक्त स्ट्रिंग), $aस्क्रीन पर प्रिंट करना चाहिए , जैसे '', यह अंदर विशेष अर्थ है, $विशेष व्याख्या से ढाल होगा । इसके बजाय, यह प्रिंट करता है ''। ऐसा क्यों?

जवाबों:


21

'अपने में एकल उद्धरण चरित्र echoउदाहरण हो जाता है यह वस्तुतः मान (और इसके अर्थ खो देता है) के रूप में यह डबल उद्धरण में संलग्न ( ")। संलग्न वर्ण दोहरे उद्धरण हैं।

आप जो कर सकते हैं, वह एकल उद्धरणों को अलग से प्रिंट करें:

echo "'"'$a'"'"

या बच $ :

echo "'\$a'"

ओह, आप पूरी तरह से सही हैं! आउटपुट आपके उत्तर के अनुरूप है, लेकिन मेरा संदेह "दोहरे उद्धरणों ('"') में वर्णों को जोड़ने वाली रेखा के साथ था, उद्धरण के भीतर सभी वर्णों के शाब्दिक मूल्य को '$', ' ’, ‘\’, and, when history expansion is enabled, ‘!’." in the manual. But now reading it again I realized the second character is not single quote, ("'") but tilde ("') के अपवाद के साथ संरक्षित करता है । '' आपकी त्वरित प्रतिक्रिया के लिए आभारी हूँ। धन्यवाद!
लैव्य २३'१४ १०:०४

2
मैनुअल में उल्लिखित दूसरा चरित्र टिल्ट नहीं बैकटिक है।
केनी एविट

6

आप प्रलेखन को गलत समझते हैं:

यह अंदर विशेष अर्थ है, विशेष व्याख्या से $ ढाल होगा

"इसका विशेष अर्थ होने" का अर्थ है कि इसकी विशेष रूप से व्याख्या की जाती है, शाब्दिक रूप से नहीं। एकल उद्धरण $विस्तारित होने से रोकते हैं । लेकिन दोहरे उद्धरण-चिह्नों के भीतर एकल उद्धरण शाब्दिक वर्ण हैं अर्थात वे किसी भी चीज़ को प्रभावित नहीं करते हैं। अगर आप आउटपुट चाहते हैं $aतो आपको जरूरत है echo '$a'


तुम सही हो। मैंने न केवल दस्तावेज़ को गलत समझा, मैंने इसे गलत किया ("" "" "" के लिए तालमेल)। आप "दोहरे उद्धरणों के भीतर एकल उद्धरण शाब्दिक वर्ण हैं" के बारे में सही हैं। धन्यवाद!
लाव्या
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.