2011-11-24 17 views
38

मैं स्ट्रिंग के आसपास एकल उद्धरण का उपयोग करते समय इसबैश में सिंगल कोट स्ट्रिंग में एकल कोट से कैसे बचें?

I'm a student 

बेशक तरह बैश में एक स्ट्रिंग आप इसे इस

echo "I'm a student" 

लेकिन यह कैसे की तरह कर सकते हैं यह पूरा करने के प्रदर्शित करना चाहते हैं?

+4

क्षमा के बीच तकनीकी रूप से है, वहाँ एकल उद्धरण के बीच में एक भी बोली जगह कोई रास्ता नहीं है। खंड पर http://www.gnu.org/software/bash/manual/bashref.html#Special-Parameters देखें '3.1.2.2 एकल Quotes' –

उत्तर

70
echo 'I\'m a student' 

काम नहीं करता है। लेकिन निम्न काम करता है:

echo $'I\'m a student' 

बैश के आदमी पृष्ठ से:

एक एकल उद्धरण एकल उद्धरण के बीच घटित नहीं हो सकता है, यहां तक ​​कि जब एक बैकस्लैश द्वारा पहले।
....
फॉर्म के शब्द $ 'string' विशेष रूप से इलाज किया जाता है। शब्द स्ट्रिंग में फैलता है, बैकस्लैश-एस्केक्ड वर्णों के साथ एएनएसआई सी मानक द्वारा निर्दिष्ट के रूप में प्रतिस्थापित किया गया है।

+3

एक भद्दा रूप है:' 'मैं' " '"' मा छात्र ' –

+32

क्यों, बाश, * whyyyy *? –

+2

'echo $' मैं एक छात्र हूं! '' => '! ': घटना नहीं मिली', यह एक * वास्तविक * एकल उद्धृत स्ट्रिंग नहीं है, जिसे बाश में, किसी भी व्याख्या से रक्षा करनी चाहिए। – regilero

33

ग्लेन जैकमैन द्वारा उल्लिखित "बदसूरत" समाधान वास्तव में शीर्ष स्तर के उत्तर के रूप में सूचीबद्ध होना चाहिए। यह अच्छी तरह से काम करता है और कुछ स्थितियों में वास्तव में सुंदर है।

'I'"'"'m a student' 

यह तो I के बाद एकल उद्धृत स्ट्रिंग समाप्त होता है तुरंत एक डबल उद्धृत स्ट्रिंग एक भी बोली युक्त शुरू होता है और फिर एक और एक उद्धृत स्ट्रिंग शुरू होता है। तब बैश सभी संगत तारों को एक में जोड़ता है।

सुंदर!

+18

मुझे लगता है कि सौंदर्य की हमारी परिभाषा कुछ हद तक अलग है ..;) –

0

उदाहरण नीचे काम करता है क्योंकि भाग निकले एकल उद्धरण \' दो एकल-उद्धृत तर्क

echo 'I'\''m a student' 
संबंधित मुद्दे