जबकि bashपहलू को कवर किया गया है, आपका प्रश्न मुझे लगता है कि आप perlकोड में उन चर में आ गए हैं ।
$&और $_में विशेष चर रहे हैं perl। और वे विशेष रूप perlसे शेल कोड से बुलाए गए कोड में पाए जाते हैं ।
$_डिफ़ॉल्ट चर कई perlकार्यों और ऑपरेटरों पर काम करता है। वह चर इनपुट ऑपरेटरों द्वारा निर्धारित डिफ़ॉल्ट चर भी है।
में:
perl -pe 'some-code' < some-input
कुछ-इनपुट कुछ-इनपुट की प्रत्येक पंक्ति के लिए चलाए जाते हैं, जिसमें लाइन जमा होती है $_, और $_कुछ-कोड चलने के बाद सामग्री मुद्रित होती है।
s/regex/replacement/ऑपरेटर पर काम करता है $_डिफ़ॉल्ट रूप से। तो आप अक्सर चीजों को ढूंढते हैं:
perl -pe 's/foo/bar/'
जो इसके लिए छोटा है:
perl -pe '$_ =~ s/foo/bar/'
(ऊपर, $_जहाँ तक शेल का संबंध है perl, इंटरप्रेटर को दिए गए एक क्रियात्मक तर्क का सिर्फ एक हिस्सा है । यह शेल वेरिएबल नहीं है। उस शब्दशः तर्क को perlअभिव्यक्ति के रूप में पारित किया गया है -e) perlऔर इसके लिए perlइसकी व्याख्या की गई है। चर)।
$&एक अन्य विशेष perlचर है जो पिछले मिलान ऑपरेटर ( m/.../, s/.../.../...) द्वारा जो कुछ भी मिलान किया गया था, उसका विस्तार करता है ।
उदाहरण के लिए:
$ echo foo | perl -lne '
print "The last character in $_ is $&" if m/.$/'
The last character in foo is o
या:
$ echo foo bar | perl -pe 's/[aeiou]+/<$&>/g'
f<oo> b<a>r