मैं शाब्दिक स्ट्रिंग के लिए ack करना चाहते हैं: एक कोड बेस में "$$
" है, लेकिन इस तरह डॉलर साइन भागने:मैं एके का उपयोग कर एक डॉलर के संकेत के लिए कैसे बच सकता हूं?
ack \$\$
काम नहीं करता।
मैं शाब्दिक स्ट्रिंग के लिए ack करना चाहते हैं: एक कोड बेस में "$$
" है, लेकिन इस तरह डॉलर साइन भागने:मैं एके का उपयोग कर एक डॉलर के संकेत के लिए कैसे बच सकता हूं?
ack \$\$
काम नहीं करता।
आप उलझन में हो रही है खोल उद्धरण द्वारा। जब आप टाइप करें:
ack "\\\$\\\$\("
खोल डबल उद्धृत स्ट्रिंग ताकि \\
\
लिए अनुवाद किया है interpolates, \$
$
लिए अनुवाद किया है और \(
\(
लिए अनुवाद किया है और पावती अपने तर्क के रूप में स्ट्रिंग \$\$\(
हो जाता है।
ack '\$\$\('
echo
साथ ack
बदलें कैसे खोल तार विस्तार हो रहा है पता लगाने के लिए: यह एकल उद्धरण का उपयोग करके खोल प्रक्षेप से बचने और आह्वान करने के लिए बहुत सरल है। ध्यान दें कि
ack "\\$\\$\("
भी काम करेगा, लेकिन कुछ अलग कारणों से। यहां, पहले दो \
को एक एकल (बच निकला) \
के रूप में माना जाता है, तो $
को $
के रूप में अनुवादित किया गया है क्योंकि इसके बाद एक वर्ण होता है जो चर नाम में मान्य वर्ण नहीं है। \(
(
के बजाय \(
तक फैला है क्योंकि (
इंटरपोलेशन के अधीन नहीं है और इसलिए इसे बचने की आवश्यकता नहीं है। लेकिन ध्यान दें कि डबल कोट्स के बाहर, \(
को (
में परिवर्तित किया गया है।
शैल उद्धरण नियम कभी-कभी भ्रमित हो जाते हैं!
हाँ मैं आसानी से खोल उद्धरण नियमों से भ्रमित हो जाता हूं - गूंज चाल एक है हालांकि महान विचार, –
आप तीन बैकस्लैश के साथ डॉलर साइन चरित्र बच सकते हैं, इस तरह:
ack "\\\$\\\$"
या एकल उद्धरण का उपयोग करें, जहाँ आप केवल एक बार यह से बचने के लिए है:
ack '\$\$'
सिंगल कोट्स का उपयोग करना बहुत आसान है: 'ack' \ $ \ $ \ ('' ठीक काम करना चाहिए। –
यूप, यह बहुत बेहतर है - धन्यवाद! –
%q
प्रारूप विनिर्देशक का उपयोग कर आप के लिए उद्धरण का ख्याल रखने के लिए आप printf
का उपयोग कर सकते हैं।
$ printf %q '$$('
\$\$\(
help print
%q quote the argument in a way that can be reused as shell input
उपयोग पावती के -Q
अपने एस्केपिंग करने के लिए (यहाँ मैं यह सोचते हैं रहा हूँ बैश) कहने के लिए निम्नलिखित है `।
ack -Q '$$'
साझा करने के लिए धन्यवाद बहुत बढ़िया, धन्यवाद! – blushrt
'एके '[$] [$]''। चरित्र वर्ग एन से बचने से क्लीनर। –