उदाहरण के लिए, $PATH
और$HOME
जब मैं टाइप echo $PATH
करता हूं तो यह मेरी वापसी करता है $PATH
, लेकिन मैं इस शब्द को प्रतिध्वनित करना चाहता हूं $PATH
और न कि वास्तविक चर के लिए जो खड़ा है, echo "$PATH"
वह भी काम नहीं करता है।
उदाहरण के लिए, $PATH
और$HOME
जब मैं टाइप echo $PATH
करता हूं तो यह मेरी वापसी करता है $PATH
, लेकिन मैं इस शब्द को प्रतिध्वनित करना चाहता हूं $PATH
और न कि वास्तविक चर के लिए जो खड़ा है, echo "$PATH"
वह भी काम नहीं करता है।
जवाबों:
आपको बस डॉलर से बचने की जरूरत है $
।
echo \$PATH
$PATH
या इसे सिंगल कोट्स में घेरें:
echo '$PATH'
$PATH
यह सुनिश्चित करेगा कि शब्द की व्याख्या शेल द्वारा नहीं की गई है।
echo -e
मैन पेज के बारे में कुछ नहीं कहा ।
-e
झंडा विस्तार करने के लिए, उदाहरण के लिए, प्रयोग किया जाता है \t
एक शाब्दिक टैब वर्ण के लिए। पैरामीटर विस्तार को रोकने के लिए डॉलर के चिह्न से बचना असंबंधित है।
echo '\$PATH' >> output.txt
परिणाम "/ usr / स्थानीय / बिन: / usr / sbin: / usr / bin: / sbin: / bin: / usr / खेल: / usr / स्थानीय / खेल: / ऑप्ट / vc / बिन" फ़ाइल में लिखा जा रहा है , "$ PATH" नहीं।
echo '\044*' > first.txt
कहीं भी होगी first.txt में उत्पादन $ *
$
अधिकांश गोले के सिंटैक्स में एक बहुत ही विशेष चरित्र होता है। यदि हम केवल बॉर्न-जैसे गोले को देखते हैं तो इसका उपयोग किया जाता है:
$#
, $var
,${foo:-bar}
$(logname)
(सब ${ logname;}
शेल से बचने के लिए भी कुछ गोले में ) के रूप में कमांड प्रतिस्थापन$((1+1))
( $[1+1]
कुछ गोले में भी ) अंकगणित का विस्तार ।$'\n'
या $"localized string"
।पिछले मामले के अलावा, उन विस्तार / प्रतिस्थापन अभी भी दोहरे उद्धरण चिह्नों के अंदर होते हैं (और अंदर $"..."
में bash
या ksh93
)
$
विशेष रूप से इलाज किए जाने से रोकने के लिए , आपको इसे या तो उद्धृत करने की आवश्यकता है:
echo '$PATH'
या echo '$'PATH
। आप आम तौर पर उपयोग करना चाहते हैं क्योंकि यह अधिकांश गोले में सभी पात्रों (खुद को छोड़कर) से बच जाता है।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'
यहां कुछ और उपयोग करना चाहते हैं।
ध्यान दें कि दोहरे उद्धरण के अंदर शाब्दिक $ एक समस्या हो सकती है। यह दोहरे उद्धरण चिह्नों के बाहर $ का उत्पादन करके किया जा सकता है, जैसे:
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
मनमाने डेटा के लिए उपयोग नहीं करना चाहिए ।
उपयोग:
echo ''\$PATH'' >> output.txt
यह काम करेगा।
ec""h'''o''' ''""''\$P''A""TH''
echo '$PATH'
। उद्धृत करने के बारे में अधिक जानकारी के लिए, इसे देखें और यह