अंतिम कमांड-लाइन तर्क प्राप्त करने के लिए $ {!} कैसे काम करता है?


19

अंतिम कमांड-लाइन तर्क प्राप्त करने के लिए उन्नत बैश-स्क्रिप्टिंग गाइड से:

या: lastarg=${!#} यह चर का एक अप्रत्यक्ष संदर्भ है $#
ध्यान दें कि lastarg=${!$#}काम नहीं करता है।


4
एक तरफ के रूप में, एबीएस संदर्भ के रूप में काफी भरा हुआ है; irc.freenode.org # बैश चैनल में इसके फैक्टॉइड के इतिहास के लिए Wetedge.org/~greybot/meta/abs देखें । बैश-हैकर्स 'विकी और Wooledge BashGuide अशुद्धियों के घनत्व के लिए कुख्यात के रूप में नहीं कर रहे हैं। बाद के भीतर, अप्रत्यक्ष संदर्भों को बशफेक # 6 में विस्तार से कवर किया गया है ; पूर्व में, wiki.bash-hackers.org/syntax/pe#indirection
चार्ल्स डफी

1
बस एक सवाल: !$सरल और एक ही नहीं है?
अनिद्रा

जवाबों:


27

जैसा कि यह कहता है कि यह एक अप्रत्यक्ष संदर्भ है। निम्नलिखित उदाहरण लें:

$ var=test
$ test='Hello, world'
$ echo ${!var}
Hello, world

अब अगर मैं निम्नलिखित स्थितियाँ निर्धारित करने वाला था:

$ set -- one two three

और $#स्थितीय मापदंडों की कुल संख्या का प्रतिनिधित्व करेगा:

$ echo $#
3

इसका मतलब है जब मैं इसे कॉल करता ${!#}हूं जैसे मैं कह रहा हूं कि मुझे नामित पैरामीटर का मूल्य दें 3:

$ echo ${!#}
three
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.