मैं डॉलर के संकेत कैसे प्रतिध्वनित कर सकता हूं?


67

उदाहरण के लिए, $PATHऔर$HOME

जब मैं टाइप echo $PATHकरता हूं तो यह मेरी वापसी करता है $PATH, लेकिन मैं इस शब्द को प्रतिध्वनित करना चाहता हूं $PATHऔर न कि वास्तविक चर के लिए जो खड़ा है, echo "$PATH"वह भी काम नहीं करता है।


हाँ की तरह एकल उद्धरण का उपयोग करें: echo '$PATH'। उद्धृत करने के बारे में अधिक जानकारी के लिए, इसे देखें और यह
पंड्या

@don ने केवल सर्वरफोल पर एक डूप देखा। मेरी गलती।
गीदडोल्या


@ स्टीफनचेज़ेलस यह सवाल इस एक से लगभग दो साल नया है।
डिस्प्लेनेम

@DisplayName, हाँ लेकिन उन सभी को कवर करने के लिए एक "विहित" प्रश्न के रूप में इरादा है "मैं विशेष चरित्र एक्स कैसे प्रदर्शित करता हूं"। (मुझे यकीन नहीं है कि मैं उन "कैनोनिकल" कवर के विचार को पसंद करता हूं, जो विशिष्ट प्रश्नों को बंद करने के लिए उपयोग किए जा रहे हैं, हालांकि यही कारण है कि मैंने इसे एक करीबी वोट के बजाय टिप्पणी के रूप में जोड़ा)।
स्टीफन चेजलस

जवाबों:


77

आपको बस डॉलर से बचने की जरूरत है $

echo \$PATH
$PATH

या इसे सिंगल कोट्स में घेरें:

echo '$PATH'
$PATH

यह सुनिश्चित करेगा कि शब्द की व्याख्या शेल द्वारा नहीं की गई है।


1
धन्यवाद, इसने echo -eमैन पेज के बारे में कुछ नहीं कहा ।
डिस्प्लेनेम

-eझंडा विस्तार करने के लिए, उदाहरण के लिए, प्रयोग किया जाता है \tएक शाब्दिक टैब वर्ण के लिए। पैरामीटर विस्तार को रोकने के लिए डॉलर के चिह्न से बचना असंबंधित है।
चेपनर

2
किसी फ़ाइल पर निर्देशित करते समय यह काम नहीं करता है। echo '\$PATH' >> output.txtपरिणाम "/ usr / स्थानीय / बिन: / usr / sbin: / usr / bin: / sbin: / bin: / usr / खेल: / usr / स्थानीय / खेल: / ऑप्ट / vc / बिन" फ़ाइल में लिखा जा रहा है , "$ PATH" नहीं।
सेरिन डे

2
बहुत दिलचस्प है, अगर आप सिंगल कोट्स और एक बच गए चरित्र का उपयोग कर रहे हैं, तो यह सिर्फ $ pATH को प्रतिध्वनित करना चाहिए। क्या OS / पैकेज आपके इको कोमैंड से सॉर्ट किया गया है?
गीदडबल्या

आप के लिए @Cerin @ स्टीफन जवाब काम echo '\044*' > first.txtकहीं भी होगी first.txt में उत्पादन $ *
MAQ

20

$अधिकांश गोले के सिंटैक्स में एक बहुत ही विशेष चरित्र होता है। यदि हम केवल बॉर्न-जैसे गोले को देखते हैं तो इसका उपयोग किया जाता है:

  1. में के रूप में पैरामीटर विस्तार $#, $var,${foo:-bar}
  2. $(logname)(सब ${ logname;}शेल से बचने के लिए भी कुछ गोले में ) के रूप में कमांड प्रतिस्थापन
  3. $((1+1))( $[1+1]कुछ गोले में भी ) अंकगणित का विस्तार ।
  4. कुछ गोले में उद्धृत करने के अन्य रूप जैसे $'\n'या $"localized string"

पिछले मामले के अलावा, उन विस्तार / प्रतिस्थापन अभी भी दोहरे उद्धरण चिह्नों के अंदर होते हैं (और अंदर $"..."में bashया ksh93)

$विशेष रूप से इलाज किए जाने से रोकने के लिए , आपको इसे या तो उद्धृत करने की आवश्यकता है:

  • एकल उद्धरण: echo '$PATH'या echo '$'PATH। आप आम तौर पर उपयोग करना चाहते हैं क्योंकि यह अधिकांश गोले में सभी पात्रों (खुद को छोड़कर) से बच जाता है।
  • blackslash: echo \$PATH। डबल कोट्स के अंदर भी:echo "\$PATH"
  • कुछ गोले में, कुछ अन्य के हवाले से ऑपरेटर: echo $'$PATH', echo $'\44PATH'(एक ASCII संगत चारसेट कल्पना करते हुए),echo $'\u0024'

या सुनिश्चित करें कि यह ऊपर सूचीबद्ध के रूप में विस्तार के एक वैध रूप का हिस्सा नहीं है:

  • echo "$"PATH
  • echo $""PATH,echo $"PATH" । उन से बचा जाना चाहिए क्योंकि कुछ गोले पसंद करते हैं ksh93और उद्धरण bashके $"..."रूप का समर्थन करते हैं।
  • echo $``PATH। कोई कारण नहीं है कि आप इसका उपयोग करना चाहते हैं सिवाय इसके कि यह दिखाना संभव है।
  • echo "${$+$}PATH" और अन्य जटिल ...

या आप इसे $दूसरे तरीके से आउटपुट कर सकते हैं :

  • यूनिक्स के अनुरूप echo: echo '\044PATH'(कुछ अन्य echoकी जरूरत है echo -e '\044PATH')
  • printf '\44PATH\n'
  • बिल्ली << \ EOF
    $ पथ
    EOF

ध्यान दें कि कैसे उन बैकस्लैश को उद्धृत करने की आवश्यकता है क्योंकि वे भी स्पष्ट रूप से शेल के लिए विशेष हैं।

उम्मीद है कि अब तक स्पष्ट हो जाना चाहिए कि हालांकि यह करने के कई तरीके हैं, कोई और अच्छा कारण नहीं है कि आप echo '$PATH'यहां कुछ और उपयोग करना चाहते हैं।


1

ध्यान दें कि दोहरे उद्धरण के अंदर शाब्दिक $ एक समस्या हो सकती है। यह दोहरे उद्धरण चिह्नों के बाहर $ का उत्पादन करके किया जा सकता है, जैसे:

echo "My terminal is $term, first file found in /dev is </dev/`ls /dev | head -n 1`>, the
dollar symbol is '"`echo '$'`"', and a newspaper costs "`echo '$'`"2.50."

or like this:

echo "$term is the value of "'$term'

उत्पादन:

My terminal is xterm, first file found in /dev is </dev/acpi>, the dollar symbol
is '$', and a newspaper costs $2.50.

xterm is the value of $term

या echo "$term is the value of \$term"जैसा कि पहले से ही एक और जवाब में समझाया गया है। या printf '%s is the value of $term\n' "$term"वैसे भी किसी को echoमनमाने डेटा के लिए उपयोग नहीं करना चाहिए ।
स्टीफन चेज़लस

-2

उपयोग:

echo ''\$PATH'' >> output.txt 

यह काम करेगा।


2
कृपया नीचे टिप्पणी करते हुए एक टिप्पणी जोड़ें
andreas-h

2
याec""h'''o''' ''""''\$P''A""TH''
स्टीफन चेज़लस

मुझे यकीन नहीं है कि इस उत्तर का क्या प्रयास किया जा रहा है। इसका उत्तर \ _ या एकल उद्धरणों का उपयोग करना है। echo '$ PATH' प्रिंट करेगा $ PATH प्रतिध्वनि '\ $ PATH' प्रिंट करेगा $ $ PATH प्रतिध्वनि "\" $ पथ "$ PATH प्रतिध्वनि मुद्रित करेगा '\' $ पथ 'तकनीकी रूप से सही काम करेगा, लेकिन दो अशक्त तार कोई उद्देश्य नहीं।
बोबापुल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.