बैश में विस्मयादिबोधक चिह्न के साथ चर प्रतिस्थापन


46

मेरी .cfg bash स्क्रिप्ट फ़ाइल में मेरी निम्न पंक्तियाँ हैं

DDF_SOURCE="siebel_DATA_DATE_FORMAT"
DATA_DATE_FORMAT=${!DDF_SOURCE}

कैसे ${!DDF_SOURCEमूल्यांकन किया जाता है? यह होगा !siebel_DATA_DATE_FORMAT, जो मेरे लिए कोई मतलब नहीं है।

जवाबों:


65

यह एक अप्रत्यक्ष विस्तार है , जो man bashधारा विस्तार में प्रलेखित है , उपधारा पैरामीटर विस्तार :

यदि पैरामीटर का पहला वर्ण विस्मयादिबोधक बिंदु (!) है, तो चर अप्रत्यक्ष का एक स्तर पेश किया जाता है। बैश बाकी पैरामीटर से बने वेरिएबल के मान को वेरिएबल के नाम के रूप में उपयोग करता है; इस चर का फिर विस्तार किया जाता है और उस मूल्य का उपयोग बाकी सबस्टेशन में किया जाता है, बजाय पैरामीटर के मूल्य के। इसे अप्रत्यक्ष विस्तार के रूप में जाना जाता है।

bash-4.2$ DDF_SOURCE="siebel_DATA_DATE_FORMAT"

bash-4.2$ siebel_DATA_DATE_FORMAT='Hello Indirect Redirection'

bash-4.2$ DATA_DATE_FORMAT=${!DDF_SOURCE} # siebel_DATA_DATE_FORMAT must get value before this line

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