ভেরিয়েবলের সামনে '#' অপারেটর ভেরিয়েবল প্রসারণে কী করতে পারে?


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-মিনিটের কাজ এবং তারপরে আর কখনই# সেই মেশিনে আমাকে আর কোনও প্রম্পট দেখার দরকার নেই ।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.