एक चर के सामने '#' ऑपरेटर चर विस्तार में क्या करता है?


12

नीचे टर्मिनल में निष्पादित कोड है

[root@idm ~]# x="$(date +%d%m%y)"    
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6

क्या कोई मुझे समझने में मदद कर सकता है कि आउटपुट क्यों है 6? #चर के लिए अनिवार्य रूप से क्या कर रहा है?

जवाबों:


25

यह एक पैरामीटर विस्तार है जो पैरामीटर की लंबाई, या किसी सरणी में तत्वों की संख्या, या स्थितीय मापदंडों की संख्या को लौटाता है।

कृपया अपने शेल मैनुअल को पढ़ें। निम्नलिखित bashमैनुअल से है:

${#parameter}

के मान के वर्णों में लंबाई parameterप्रतिस्थापित की गई है । अगर parameterहै *या @, प्रतिस्थापित मूल्य स्थितीय मापदंडों की संख्या है। यदि parameterएक सरणी नाम है जिसे *या तो सब्स्क्राइब्ड किया गया है @, तो प्रतिस्थापित मान एरे में तत्वों की संख्या है। यदि parameterएक अनुक्रमित सरणी नाम एक ऋणात्मक संख्या से घटाया जाता है, तो उस संख्या को पैरामीटर के अधिकतम सूचकांक की तुलना में एक से अधिक के रूप में व्याख्या की जाती है, इसलिए नकारात्मक सूचकांक सरणी के अंत से वापस आ जाते हैं, और -1 तत्व का सूचकांक अंतिम तत्व को संदर्भित करता है ।


और यह भी, कृपया इंटरेक्टिव रूट शेल में काम करने की आदत न डालें। यह खतरनाक और लापरवाह है। sudoसंयमी और केवल उन स्थितियों में उपयोग करें जिनके लिए उन्नत विशेषाधिकार की आवश्यकता होती है। साथ खेलना bashकुछ ऐसा है जो आप निश्चित रूप से एक साधारण गैर-रूट उपयोगकर्ता के रूप में कर सकते हैं।

पिछले कुछ वर्षों में, मैंने केवल अपने लिए एकल उपयोगकर्ता जोड़ने के लिए एक इंटरैक्टिव रूट शेल का उपयोग किया है। यह 2 मिनट का काम है और फिर मुझे उस मशीन पर फिर से कभी देखने की जरूरत नहीं है #


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