नीचे टर्मिनल में निष्पादित कोड है
[root@idm ~]# x="$(date +%d%m%y)"
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6
क्या कोई मुझे समझने में मदद कर सकता है कि आउटपुट क्यों है 6? #चर के लिए अनिवार्य रूप से क्या कर रहा है?
नीचे टर्मिनल में निष्पादित कोड है
[root@idm ~]# x="$(date +%d%m%y)"
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6
क्या कोई मुझे समझने में मदद कर सकता है कि आउटपुट क्यों है 6? #चर के लिए अनिवार्य रूप से क्या कर रहा है?
जवाबों:
यह एक पैरामीटर विस्तार है जो पैरामीटर की लंबाई, या किसी सरणी में तत्वों की संख्या, या स्थितीय मापदंडों की संख्या को लौटाता है।
कृपया अपने शेल मैनुअल को पढ़ें। निम्नलिखित bashमैनुअल से है:
${#parameter}के मान के वर्णों में लंबाई
parameterप्रतिस्थापित की गई है । अगरparameterहै*या@, प्रतिस्थापित मूल्य स्थितीय मापदंडों की संख्या है। यदिparameterएक सरणी नाम है जिसे*या तो सब्स्क्राइब्ड किया गया है@, तो प्रतिस्थापित मान एरे में तत्वों की संख्या है। यदिparameterएक अनुक्रमित सरणी नाम एक ऋणात्मक संख्या से घटाया जाता है, तो उस संख्या को पैरामीटर के अधिकतम सूचकांक की तुलना में एक से अधिक के रूप में व्याख्या की जाती है, इसलिए नकारात्मक सूचकांक सरणी के अंत से वापस आ जाते हैं, और -1 तत्व का सूचकांक अंतिम तत्व को संदर्भित करता है ।
और यह भी, कृपया इंटरेक्टिव रूट शेल में काम करने की आदत न डालें। यह खतरनाक और लापरवाह है। sudoसंयमी और केवल उन स्थितियों में उपयोग करें जिनके लिए उन्नत विशेषाधिकार की आवश्यकता होती है। साथ खेलना bashकुछ ऐसा है जो आप निश्चित रूप से एक साधारण गैर-रूट उपयोगकर्ता के रूप में कर सकते हैं।
पिछले कुछ वर्षों में, मैंने केवल अपने लिए एकल उपयोगकर्ता जोड़ने के लिए एक इंटरैक्टिव रूट शेल का उपयोग किया है। यह 2 मिनट का काम है और फिर मुझे उस मशीन पर फिर से कभी देखने की जरूरत नहीं है #।
#ऑपरेटर एक चर की लंबाई देता है। आपके मामले में चर की xलंबाई छह है।
कृपया अधिक जानकारी के लिए पैरामीटर प्रतिस्थापन पर एक नज़र है ।